diff --git a/.changeset/fix-double-tab-navigation.md b/.changeset/fix-double-tab-navigation.md new file mode 100644 index 00000000000..c31629ed96a --- /dev/null +++ b/.changeset/fix-double-tab-navigation.md @@ -0,0 +1,7 @@ +--- +'@spectrum-web-components/button': patch +--- + +**Fixed** issue where clicking `sp-button` or `sp-action-button` with `href` and `target="_blank"` opened two tabs in Chrome instead of one. + +The fix checks if the anchor element is already in the click event's composed path before triggering a proxy click. When the user clicks directly on the button, the absolutely-positioned anchor naturally receives the click, so no proxy is needed. The proxy click is now only triggered for keyboard activation and VoiceOver, where the anchor isn't in the click path. diff --git a/.changeset/friendly-tables-travel.md b/.changeset/friendly-tables-travel.md new file mode 100644 index 00000000000..96d4a05610a --- /dev/null +++ b/.changeset/friendly-tables-travel.md @@ -0,0 +1,21 @@ +--- +'@spectrum-web-components/base': minor +'@spectrum-web-components/core': minor +--- + +Refactored size mixin exports and badge type naming for consistency. + +**@spectrum-web-components/base (1st-gen)** + +- **Added**: New exports `ELEMENT_SIZES` and `DEFAULT_ELEMENT_SIZES` for typed size arrays +- **Deprecated**: `ElementSizes` record is now deprecated in favor of `ELEMENT_SIZES`. The export is preserved for backward compatibility but will be removed in a future major release. + +**@spectrum-web-components/core (2nd-gen)** + +- **Changed**: Replaced `ElementSizes` record with `ELEMENT_SIZES` const array and `DEFAULT_ELEMENT_SIZES` +- **Changed**: `VALID_SIZES` arrays are now typed as `readonly ElementSize[]` for better type safety +- **Changed**: Badge type exports renamed for consistency: + - `BADGE_VARIANTS_S2` → `BADGE_VARIANTS` + - `BADGE_VARIANTS_COLOR_S2` → `BADGE_VARIANTS_COLOR` + - `BadgeVariantS2` → `BadgeVariant` + - `BadgeColorVariantS2` → `BadgeColorVariant` diff --git a/.changeset/some-horses-shine.md b/.changeset/some-horses-shine.md new file mode 100644 index 00000000000..5046052fa79 --- /dev/null +++ b/.changeset/some-horses-shine.md @@ -0,0 +1,16 @@ +--- +'@spectrum-web-components/overlay': patch +'@spectrum-web-components/textfield': patch +'@spectrum-web-components/number-field': patch +--- + +**Added**: Added truncated-value tooltip behavior for single-line text inputs. + +- `` now shows a tooltip with the full value when the displayed value is visually truncated (via `TruncatedValueTooltipController`). +- Tooltip placement can be controlled with the `tooltip-placement` attribute on `` or `` +- `` inherits the same truncation tooltip behavior from `TextfieldBase`, including formatted numeric/currency values. +- `type="password"` textfields no longer use ellipsis truncation styling (`text-overflow: clip`) to avoid awkward visual truncation. + +**Changed**: `sp-overlay` (internal) + +- Added internal property `describeTrigger` (`'auto' | 'none'`, default `'auto'`). When set to `'none'`, the overlay does not set `aria-describedby` on the trigger when open (handled in `HoverController` and `LongpressController`), avoiding double announcement for screen readers when the overlay content duplicates the trigger (e.g. truncated-value tooltips). Textfield’s truncated-value tooltip uses this so the tooltip is visual-only for a11y. diff --git a/.changeset/switch-token-mapping-s2.md b/.changeset/switch-token-mapping-s2.md new file mode 100644 index 00000000000..0a485580bc7 --- /dev/null +++ b/.changeset/switch-token-mapping-s2.md @@ -0,0 +1,10 @@ +--- +'@spectrum-web-components/switch': patch +'@spectrum-web-components/styles': patch +--- + +**Added**: New switch component tokens and styles were mapped to bring more fidelity for Spectrum 2 foundations theme. Switch now uses system theme tokens for track and handle border colors, handle background, and themed border width; S1 and Express handle border colors are preserved. Users can hook into `--mod-switch-border-width-themed` to adjust the switch input border; `--mod-switch-border-color-*` to modify the switch input border color; `--mod-switch-handle-border-color-*` to change the handle/thumb border color. + +**Fixed**: S2 foundations switch emphasized down state color was fixed to reflect the S2 switch down state design spec. The high contrast input border color for S2, and a high-contrast typo are fixed. + +**Fixed**: Theme bridge token additions and updates in `@spectrum-web-components/styles` (Spectrum, Express, and tokens-v2) support the switch overrides. diff --git a/.changeset/tooltip-self-managed-trigger-traversal.md b/.changeset/tooltip-self-managed-trigger-traversal.md new file mode 100644 index 00000000000..c56cd1e7f34 --- /dev/null +++ b/.changeset/tooltip-self-managed-trigger-traversal.md @@ -0,0 +1,7 @@ +--- +'@spectrum-web-components/tooltip': patch +'@spectrum-web-components/action-menu': patch +'@spectrum-web-components/picker': patch +--- + +**Fixed**: Self-managed tooltips slotted into host components (Action Menu, Picker) no longer emit false `[TRAVERSAL_EXHAUSTED]` warnings. Added a public `triggerElement` setter on `sp-tooltip` that allows host components to explicitly wire their internal trigger element, bypassing the ancestor-based composed-tree traversal that fails when the intended trigger is a sibling of the tooltip slot rather than an ancestor. diff --git a/.changeset/yummy-crabs-kick.md b/.changeset/yummy-crabs-kick.md new file mode 100644 index 00000000000..e5e2db7bfc4 --- /dev/null +++ b/.changeset/yummy-crabs-kick.md @@ -0,0 +1,28 @@ +--- +'@spectrum-web-components/switch': minor +'@spectrum-web-components/styles': minor +--- + +- **Fixed**: Improved `` contrast in S1 and Express to meet WCAG SC 1.4.11 Non-text Contrast (3:1 minimum). The unselected track border was added in S1 and Express, matching the S2 pattern of matching the handle background color to the track border color per interaction state. + +- **Fixed**: Corrected `` handle border colors for selected states in S1 and Express. Handle border now resolves to `--spectrum-gray-75` against the filled/selected track background. + +- **Fixed**: Improved `` Forced Colors (Windows High Contrast) mode. Replaced `box-shadow` track borders with proper `border` declarations, expanded `--highcontrast-switch-border-color` to full state-specific tokens (default, hover, focus, down, disabled), and corrected handle border colors to use system colors (`ButtonFace` for selected, `GrayText` for disabled). + +- **Changed**: Renamed `--spectrum-switch-border-width-themed` to `--spectrum-switch-border-width` on ``. The border width is now a consistent 2px in all themes. **The `--mod-switch-border-width-themed` variable remains unaffected.** + +- **Changed**: Renamed `--highcontrast-switch-border-color` to `--highcontrast-switch-border-color-default` on ``, and expanded it to full per-state tokens (`hover`, `focus`, `down`, `disabled`). Previously a single token controlled the track border color in all forced-colors states. + +**If you were overriding `--highcontrast-switch-border-color` in Windows High Contrast styles, update your usage to the appropriate state-specific token.** + +```css +/* Before */ +sp-switch { + --highcontrast-switch-border-color: Highlight; +} + +/* After */ +sp-switch { + --highcontrast-switch-border-color-default: Highlight; +} +``` diff --git a/.circleci/config.yml b/.circleci/config.yml index 46d72682fb6..e69cc820d86 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -22,7 +22,7 @@ parameters: # 3. Commit this change to the PR branch where the changes exist. current_golden_images_hash: type: string - default: 043fc5e7810746403bc78170939ed3d7b2aa8fbb + default: bc3f05831171b8f420d00ee792b726e3b12da715 wireit_cache_name: type: string diff --git a/.cursor/README.md b/.cursor/README.md index 5ddd0a231d3..55e5dde33c1 100644 --- a/.cursor/README.md +++ b/.cursor/README.md @@ -192,7 +192,7 @@ Skills are used on-demand. When a task matches a skill’s purpose, the agent re - **purpose**: Run the CONTRIBUTOR-DOCS nav script to update breadcrumbs and TOCs, and handle link verification - **How to invoke**: Say “update contributor docs nav”, “regenerate TOC”, “fix broken links in CONTRIBUTOR-DOCS”, or “run the nav script”. Also invoked when you add, remove, rename, or move files under `CONTRIBUTOR-DOCS/` or change H1/H2/H3 headings (the contributor-doc-update rule may trigger; the skill holds the full workflow). - Use when: Updating contributor docs structure, regenerating navigation, or fixing reported broken links -- Provides: Operator workflow (run script, verify, fix links), Maintainer workflow (when to update script). Full instructions in `CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/01_ai-agent-instructions.md` +- Provides: Operator workflow (run script, verify, fix links), Maintainer workflow (when to update script). Full instructions in `.cursor/skills/contributor-docs-nav/references/ai-agent-instructions.md` #### Component migration (rendering and styling) @@ -201,6 +201,12 @@ Skills are used on-demand. When a task matches a skill’s purpose, the agent re - Use when: On the analyze-rendering-and-styling step for one or more components; creating one markdown file per component at `CONTRIBUTOR-DOCS/03_project-planning/03_components/[component-name]/rendering-and-styling-migration-analysis.md` - Provides: Workflow summary (specs from CSS + SWC, three-way DOM comparison, CSS⇒SWC mapping table, summary). Full instructions in `CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_analyze-rendering-and-styling/cursor_prompt.md` +#### Washing machine migration workflow + +- **purpose**: End-to-end 1st-gen → 2nd-gen migration sequence (phases, checklists, links to step docs and style guides) +- **Doc**: `CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_washing-machine-workflow.md` +- Use when: Planning or executing a component migration in the 2nd-gen component migration workstream + #### Deep understanding - **purpose**: Require a thorough deep-read of the relevant codebase before planning or implementing; write findings to a persistent markdown file (e.g. `research.md`) so the user can review and correct before any work proceeds diff --git a/.cursor/rules/accessibility-migration-analysis.mdc b/.cursor/rules/accessibility-migration-analysis.mdc new file mode 100644 index 00000000000..ce0a3205ff1 --- /dev/null +++ b/.cursor/rules/accessibility-migration-analysis.mdc @@ -0,0 +1,137 @@ +--- +description: Structure and conventions for CONTRIBUTOR-DOCS accessibility migration analysis markdown (per-component a11y migration specs). +globs: CONTRIBUTOR-DOCS/**/accessibility-migration-analysis.md +alwaysApply: false +--- + +# Accessibility migration analysis documents + +Use this when **creating or updating** `accessibility-migration-analysis.md` under `CONTRIBUTOR-DOCS/03_project-planning/03_components//`. + +These docs describe how a **2nd-gen** `swc-*` component should behave for **accessibility**, aligned with **WCAG 2.2 Level AA**, and tie to the component’s **rendering-and-styling** migration doc. + +## Reference examples (consistency) + +Use these existing docs as **examples** when matching structure, headings, tables, and phrasing: + +- `CONTRIBUTOR-DOCS/03_project-planning/03_components/badge/accessibility-migration-analysis.md` +- `CONTRIBUTOR-DOCS/03_project-planning/03_components/divider/accessibility-migration-analysis.md` +- `CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md` +- `CONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.md` + +## File location and discovery + +- **Path:** `CONTRIBUTOR-DOCS/03_project-planning/03_components//accessibility-migration-analysis.md` +- **Pairing:** Link to `./rendering-and-styling-migration-analysis.md` from **Overview → Also read**. +- **Nav:** After adding a file or changing `##` / `###` headings, run `node update-nav.js` from `CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs` (see **contributor-doc-update** rule). Register the doc in `03_components/README.md` when introducing a new component folder. + +## Required section order + +Use this **H2** order. **Do not** skip sections that apply; omit only what truly does not apply (and say so briefly if it helps readers). + +1. `## Overview` +2. `## ARIA and WCAG context` +3. `## Recommendations: \`\`` +4. `## Testing` with `### Automated tests` +5. `## Summary checklist` +6. `## References` + +Under **`## Recommendations`**, use these **`###` subsections** in order: + +1. `### ARIA roles, states, and properties` +2. `### Shadow DOM and cross-root ARIA Issues` +3. `### Accessibility tree expectations` +4. **Optional (when product guidance needs it):** e.g. `### Assistive technology, live regions`—place **after** accessibility tree expectations and **before** keyboard and focus. For **motion** (WCAG 2.2.2, reduced motion, Spectrum tokens), add rows to **Guidelines that apply** and the **Recommendations** table instead of a separate `### Motion` section—see **`progress-circle/accessibility-migration-analysis.md`**. +5. `### Keyboard and focus` + +Separate major sections with a horizontal rule (`---`) where existing docs use it (after Overview, after ARIA and WCAG context, after Recommendations block before Testing). + +## Overview + +- Start with a short paragraph: what the doc covers, **`swc-*` name**, and **WCAG 2.2 Level AA** as the target. +- Use **`###` subheadings** for structured bits—**do not** use bold-only labels like `**Also read:**` as section titles. + +**Typical subheadings** (include what fits the component): + +| Subheading | Use when | +|------------|----------| +| `### Also read` | Always—point at the component’s `rendering-and-styling-migration-analysis.md` (and optional related a11y docs). | +| `### What it is` or `### What a is` | Always—one clear definition. | +| `### When to use something else` | When authors often confuse this with another component—link to other migration or a11y docs with relative paths. | +| `### What it is not` | When a common mistaken identity exists (e.g. progress ring vs in-field spinner). | +| `### Related` | Optional—related components (e.g. progress bar vs progress circle). | + +Body text under each `###` is normal paragraphs and/or bullets. + +## ARIA and WCAG context + +- `### Pattern in the APG` — bullets: how APG (or lack of a named pattern) relates to this widget; link to APG patterns when relevant. +- `### Guidelines that apply` — a **table** with columns **`Idea`** and **`Plain meaning`** (WCAG / WAI-ARIA links in the first column as needed). +- Use the heading **`### Guidelines that apply`** (not “Guidelines that still apply”) for consistency across components. +- Optional closing paragraph: `**Bottom line:** …` before `---`. + +## Recommendations: ARIA roles, states, and properties + +Use a **table** (`Topic | What to do` or `Topic | What to do`). + +**Single semantic role policy** (always address): + +- **Prescribed host role** (e.g. `separator`, `progressbar`): State that the role is **prescribed** and **fixed**, **must not** be author-overridable in implementation or docs, and that **`swc-*` maps to one semantic role only**. If another role is needed, authors must use **different markup or a different component**—not a role override on this element. +- **No default host role** (e.g. badge, status light): State that the component should still represent **one** clear semantic thing; **do not** set a conflicting host `role` (e.g. `button`, `progressbar`) to fake another widget—use the appropriate **button / link / tag / other** component instead. + +Then add rows for **name**, **states**, **properties**, **visual-only props**, **docs expectations**, etc., **verified against the real implementation**—do not document ARIA the code does not set. + +## Shadow DOM and cross-root ARIA Issues + +- **Heading text must be exactly:** `### Shadow DOM and cross-root ARIA Issues` (word **Issues** capitalized). +- **If** the component has **no** cross-root ARIA concerns (no reliance on **ID references** that must resolve across shadow boundaries, e.g. `aria-labelledby` / `aria-describedby` pointing at shadow-only IDs) **and** it is **not** a **form-associated** control (or otherwise dependent on cross-root labeling in ways that need a written plan), the **entire body** of the subsection should be a single word: **`None`** (no extra sentences). +- **Otherwise** describe the concrete issues and expectations (e.g. `ElementInternals`, `aria-*` delegation, proposed ID strategies). + +## Live regions and announcements (progress, loading, status) + +When the component or its docs touch **live regions** or **frequent** status updates: + +- Call out **over-announcing** as a risk: docs should **warn** authors not to flood screen reader users. +- **Never** recommend **`aria-live="assertive"`** for loading or routine progress (interrupts and overwhelms). +- Treat **`aria-live="polite"`** as **rare**: polite regions still **queue** speech, and **several** components or regions updating together becomes **noisy** (bursts, backlog). Prefer **native role semantics** (e.g. **`progressbar`**) and **one** primary message for related loaders when possible. + +See **`progress-circle/accessibility-migration-analysis.md`** for a full example. + +## Keyboard and focus + +- **If the component is not focusable** in its default, supported use (no Tab stop, not a keyboard widget): the subsection must contain **only** this sentence (no extra bullets or tables): + + `**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element.` + +- **If the component is focusable or has a keyboard pattern:** replace with accurate, component-specific guidance (Tab order, keys, roving tabindex, focus trap, etc.). + +## Accessibility tree expectations + +- Use short subsections or bold lead-ins for variants (e.g. with text, icon-only, determinate vs indeterminate). +- Describe what assistive technologies should **see**—aligned with implementation. + +## Testing + +### Automated tests + +- Table: **Kind of test** | **What to check** (unit, aXe/Storybook, Playwright ARIA snapshots, contrast, etc.—match what the repo actually uses for that component). + +## Summary checklist + +- Markdown task list (`- [ ]`) of concrete, verifiable items (stories, docs, tree, focus, tooling). + +## References + +- Include **WAI-ARIA**, **WCAG 2.2**, **APG “Read me first”** (or equivalent), and the component **rendering-and-styling migration** link at minimum. Add APG pattern links when used in the doc. + +## Writing style + +- Follow **text-formatting** workspace rules: sentence case for headings (proper nouns such as **ARIA**, **WCAG**, **APG** stay as usual). +- Prefer plain, scannable wording; avoid duplicating the rendering doc—**link** to it instead. +- **Verify** behavior and ARIA in **2nd-gen source** before stating what the component exposes. + +## Related rules and skills + +- **contributor-doc-update.mdc** — when to run `update-nav.js` after heading or structure changes. +- **component-migration-analysis** skill — for `rendering-and-styling-migration-analysis.md`, not this file. +- **stories-documentation.mdc** / **stories-format.mdc** — Storybook docs, separate from this contributor planning doc. diff --git a/.cursor/rules/branch-naming.mdc b/.cursor/rules/branch-naming.mdc index 5d03c373062..d7d57fc0cf4 100644 --- a/.cursor/rules/branch-naming.mdc +++ b/.cursor/rules/branch-naming.mdc @@ -1,5 +1,5 @@ --- -description: +description: Suggests the preferred branch naming format for Spectrum Web Components contributions — lowercase, dash-separated, with a conventional commit type and optional issue number. globs: alwaysApply: true --- diff --git a/.cursor/rules/contributor-doc-update.mdc b/.cursor/rules/contributor-doc-update.mdc index 1dab3ee057f..b14c4c83382 100644 --- a/.cursor/rules/contributor-doc-update.mdc +++ b/.cursor/rules/contributor-doc-update.mdc @@ -21,10 +21,10 @@ alwaysApply: false ## What to do -1. **Run the nav script** from the contributor-docs-nav skill scripts folder (from project root): +1. **Run the nav script** from the contributor docs script folder (from project root): ```bash - cd .cursor/skills/contributor-docs-nav/scripts - node update-nav.js ../../../../CONTRIBUTOR-DOCS + cd CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs + node update-nav.js ``` 2. **Confirm** the script completes without errors. 3. **Fix any link verification errors** reported by the script (fix straightforward cases; consult the user for ambiguous ones). diff --git a/.cursor/rules/github-description.mdc b/.cursor/rules/github-description.mdc index d2db97f6477..a4597046c3e 100644 --- a/.cursor/rules/github-description.mdc +++ b/.cursor/rules/github-description.mdc @@ -35,6 +35,10 @@ Use these syntax rules when writing GitHub descriptions: - Present title, labels, and type before description content - Description format and structure should follow the pull request template in the Templates section below +- Accessibility testing checklist is required. Populate keyboard and screen reader with component-specific numbered + steps (Storybook paths, expected focus behavior, what should be announced). For non-interactive components (e.g. static + elements, dividers), state that clearly under Keyboard (e.g. no focusable parts; confirm no regressions in surrounding + examples) and still document Screen reader checks (roles, structure, labels). - Include links to related issues, RFCs, or documentation when applicable - All descriptions must include clear acceptance criteria or expected outcomes - Provide enough context so anyone can understand the objective @@ -122,6 +126,7 @@ Common additional labels include: ## Pull request guidelines +- Include the Accessibility testing checklist section in every drafted PR body (see Description structure and the template below). - Use conventional commit messages - Keep PRs focused and small when possible - Include tests for new features @@ -137,7 +142,7 @@ Common additional labels include: **Note:** All pull requests should include the `ready-for-review` label. -**When returning the template, check off the author requirements in the Author's checklist section. Do not check off the Manual review test cases or Device review sections as these are for reviewers to complete.** +**When returning the template, check off the author requirements in the Author's checklist section. Do not check off the Manual review test cases or Device review sections as these are for reviewers to complete. Fill in the **Accessibility testing checklist** with concrete steps; leave its checkboxes unchecked unless the user confirms testing is done.** ```markdown -- fixes [Issue Number] +- fixes [Issue Number] ## Screenshots (if appropriate) - ## Author's checklist @@ -177,7 +181,6 @@ Common additional labels include: - [ ] I have included a well-written changeset if my change needs to be published. - [ ] I have included updated documentation if my change required it. - ## Reviewer's checklist - [ ] Includes a Github Issue with appropriate flag or Jira ticket number without a link @@ -214,4 +217,25 @@ Common additional labels include: - [ ] Did it pass in (emulated) Mobile? - [ ] Did it pass in (emulated) iPad? +## Accessibility testing checklist + + + +**Required:** Complete each applicable item and document your testing steps (replace the placeholders with your component-specific instructions). + +- [ ] **Keyboard** (required — document steps below) + + 1. Go [here](url) + 2. Do this action + 3. Expect this result + +- [ ] **Screen reader** (required — document steps below) + + 1. Go [here](url) + 2. Do this action + 3. Expect this result ``` diff --git a/.cursor/skills/component-migration-analysis/references/migration-analysis-prompt.md b/.cursor/skills/component-migration-analysis/references/migration-analysis-prompt.md index 3f41928f39e..89f48a90b60 100644 --- a/.cursor/skills/component-migration-analysis/references/migration-analysis-prompt.md +++ b/.cursor/skills/component-migration-analysis/references/migration-analysis-prompt.md @@ -6,6 +6,19 @@ For the **[COMPONENT_NAME]** component(s), create comprehensive migration docume **IMPORTANT**: All files must be created on the original spectrum-web-components branch where the session started. +## Documentation goal + +The purpose of this documentation is to help SWC engineers understand: + +1. **What API changes are needed** to migrate to Spectrum 2 +2. **What features are new** and need implementation +3. **What features are deprecated** and should be removed or flagged +4. **What structural changes** affect render methods + +Write for an engineer who will scan this document to estimate migration work. Every section should answer: "What do I need to change in the web component?" + +For additional context on goals and common pitfalls, reference `migration-roadmap/README.md`. + ## File Organization - **One markdown file per component** @@ -36,6 +49,33 @@ Create collapsible sections using `
` and `` under `### CSS` fo - Title: "CSS selectors" - Extract all selectors from metadata.json +- Organize selectors into logical groups with bold headers for scannability: + +**Base component:** + +- The root selector (e.g., `.spectrum-Component`) + +**Subcomponents:** + +- Child element selectors (e.g., `.spectrum-Component-label`, `.spectrum-Component-icon`) + +**Variants:** + +- Selectors with `--` modifier notation (e.g., `.spectrum-Component--quiet`, `.spectrum-Component--sizeL`) + +**States:** + +- Interactive state selectors (e.g., `.is-disabled`, `.is-selected`, `:hover`, `:focus-visible`) + +**Language-specific:** + +- Internationalization selectors (e.g., `:lang(ja)`, `:lang(ko)`, `:lang(zh)`) + +**Compound selectors:** + +- Complex selectors combining multiple conditions (group these last) + +Not all components will have selectors in every category. Omit empty categories. **Passthroughs Section:** @@ -100,8 +140,26 @@ git checkout spectrum-two - **IMPORTANT**: Check both the import statements AND the template logic, as components may be removed from imports between sources - **Line-by-line comparison required**: Don't assume templates are identical - carefully check imports, component usage, and structure - Document class application differences -- **Verification steps**: After each git checkout, confirm you're viewing the correct branch's files. After documenting each DOM structure, verify the accuracy by re-reading the actual template files to ensure the HTML matches exactly what's in the source code for that branch. -- **Final accuracy check**: Before completing the documentation, re-read each template file one more time to verify the DOM structures are 100% accurate. Any discrepancies between documented HTML and actual template code will require correction. + +**Branch verification protocol (required)**: + +Before documenting each CSS DOM structure, you MUST provide proof of correct branch: + +1. Run `git branch --show-current` and confirm the output matches the expected branch +2. Quote the first 2-3 import statements from the template.js file you are reading +3. If imports are identical between branches, identify a distinguishing parameter name or feature (e.g., `hasClearButton` vs `isRemovable`, presence/absence of a variant) that proves you are on the correct branch + +This verification prevents accidentally documenting the same branch twice, which produces incorrect "no changes" conclusions. + +**Mandatory diff generation**: + +After documenting both CSS structures, generate an actual diff to verify your comparison: + +```bash +git diff main:components/[component-name]/stories/template.js spectrum-two:components/[component-name]/stories/template.js +``` + +Review this diff output to ensure your documented structures accurately reflect the differences. Do NOT rely solely on manual comparison. **Output Format**: @@ -139,15 +197,24 @@ Create a three-way HTML comparison using markdown code blocks. Use collapsible s Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two) ```diff ---- a/components/[component-name]/stories/template.js (main branch) -+++ b/components/[component-name]/stories/template.js (spectrum-two branch) -@@ -1,3 +1,3 @@ --// removed line -+// added line - // unchanged line +--- Legacy DOM structure (main branch) ++++ Spectrum 2 DOM structure (spectrum-two branch) +@@ -1,8 +1,10 @@ +-
++
+ ++ Label ++ ++
++ ++
+ Content +
``` -**Note**: Only include this diff section if there are actual differences between the main and spectrum-two branches. If the templates are identical, omit this section entirely. +**Required**: This diff section MUST be included. If no structural differences exist between branches, explicitly state: "No structural differences found between main and spectrum-two branches." Do not omit this section.
```` @@ -167,12 +234,43 @@ Create a markdown table with these exact column headers: - "Missing from CSS" - Web component feature exists but no CSS support - "Deprecated" - Being removed in Spectrum 2 +**Deprecation detection**: + +Mark features as "Deprecated" (not "Missing from CSS") when: + +1. Feature exists in SWC AND was intentionally removed in Spectrum 2 CSS +2. Variant exists in CSS main branch but not in spectrum-two branch +3. Import or component was removed between CSS branches + +Examples requiring "Deprecated" status: + +- SWC has `variant="positive"` but spectrum-two removed `.spectrum-Tooltip--positive` → Deprecated +- SWC has `icon` slot but spectrum-two removed icon rendering → Deprecated +- CSS main has `is-invalid` state but spectrum-two removed it → Deprecated + +The key question: "Was this intentionally removed as part of Spectrum 2?" If yes → Deprecated. + **Mapping Logic:** - **Variants to Attributes**: CSS selectors with variants (noted after double dash `--`) likely map to component attributes - **Base Elements to Slots**: Selectors with base class + single dash `-` (e.g., `.spectrum-button-label`) likely map to slots - **Language Selectors**: Group all selectors containing :lang together on a single row, comma-separated, as they serve the same internationalization purpose and are typically implemented as a block +**Name equivalence mapping**: + +CSS and SWC often use different names for the same concept. When mapping: + +1. **Look for functional equivalence**, not just naming similarity: + - CSS `hasClearButton` / `isRemovable` → SWC `deletable` + - CSS `is-invalid` state → SWC `invalid` attribute + - CSS `-clearButton` subcomponent → SWC `deletable` attribute triggers its render + +2. **Document name differences** in the mapping table: + - If a CSS selector maps to a differently-named SWC feature, note the relationship + - Example: `.spectrum-Tag-clearButton` | `deletable` (renders clear button) | Implemented + +3. **Do not mark as "Missing"** if the feature exists under a different name. A feature is only "Missing from WC" if no equivalent functionality exists. + **Language Selector Formatting example:** ```markdown @@ -201,23 +299,43 @@ Entries with status indicating that they appear in CSS but not WC are often an i #### CSS Spectrum 2 changes -Analyze the differences between CSS `main` and CSS `spectrum-two` branches surfaced in the DOM structure comparison and document them in this section: +Analyze the differences between CSS `main` and CSS `spectrum-two` branches surfaced in the DOM structure comparison and document them in this section. + +**Summary writing guidelines**: + +- **One bullet per change**: Each bullet should describe a specific change (group similar changes together) +- **Change-focused**: Only document what CHANGED between branches, not what exists +- **Action-oriented**: Frame changes in terms of migration impact for SWC engineers + +**Do NOT include**: + +- General component structure descriptions (these belong in the DOM structure section) +- Lists of features that remained unchanged +- Explanations of what the component does + +**Good example**: -- **Required**: Compare the HTML structures from main vs spectrum-two templates line by line -- **Document**: Any elements that are added, removed, or modified between branches -- **Include**: Changes in element attributes, class names, or structural differences -- **Note**: Even subtle differences like conditional elements or missing components must be documented -- **Focus on changes in Spectrum CSS**, not changes between spectrum web components and CSS. +> - **Icon removal**: Variant icons (Info, Alert) no longer render; icon slot may need deprecation +> - **Structural wrapper added**: Tags now wrapped in `.spectrum-TagGroup-tags` container -Be sure to note: +**Bad example**: -- Elements present in main but missing in spectrum-two -- Elements present in spectrum-two but missing in main +> **Component structure:** +> +> - Wrapper element with `spectrum-TagGroup` class +> - Optional `spectrum-TagGroup-label` for field labels +> - [describing what exists, not what changed...] + +**Types of changes to document**: + +- Elements added or removed between branches - Changes in element attributes or class names - Structural changes (different nesting, wrapper elements) -- Conditional elements that differ between branches +- Conditional logic changes (e.g., `isInvalid` removed) - Import differences that affect rendered output +**Note**: Changes to `--mod-*` custom properties between branches can signal new or deprecated features. If --mod changes reveal something not already captured above, include it. + ### 4. Resources section Create a Level 2 Heading: `## Resources` @@ -242,3 +360,14 @@ Under this heading, add a placeholder section for resources with a bulleted list - Perform line-by-line comparisons - don't assume files are similar - Ask clarifying questions for uncertain mappings instead of guessing - Use exact file paths specified in this prompt + +## Quality gates (self-check before completion) + +Before finalizing documentation, verify: + +- [ ] All three DOM structures are documented and visually distinct from each other +- [ ] Diff section shows actual code differences (or explicitly states "no differences") +- [ ] No features are marked "Missing" that exist under a different name +- [ ] Summary sections contain only changes, not structure descriptions +- [ ] CSS selectors are categorized by type (base, variants, states, etc.) +- [ ] Deprecated features are correctly identified based on spectrum-two removal diff --git a/.cursor/skills/contributor-docs-nav/SKILL.md b/.cursor/skills/contributor-docs-nav/SKILL.md index 822623069c7..850704eb66c 100644 --- a/.cursor/skills/contributor-docs-nav/SKILL.md +++ b/.cursor/skills/contributor-docs-nav/SKILL.md @@ -26,8 +26,8 @@ Run the regeneration script to update breadcrumbs and TOCs in CONTRIBUTOR-DOCS, 1. **When to run**: File/folder add/remove/rename/move; heading changes; folder structure changes; or user request. 2. **How to run** (from project root): ```bash - cd .cursor/skills/contributor-docs-nav/scripts - node update-nav.js ../../../../CONTRIBUTOR-DOCS + cd CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs + node update-nav.js ``` 3. **After running**: Verify success, report results (files updated, link counts). Fix straightforward link errors automatically; ask the user when the fix is ambiguous (e.g. target file removed, multiple anchor matches). diff --git a/.cursor/skills/contributor-docs-nav/references/ai-agent-instructions.md b/.cursor/skills/contributor-docs-nav/references/ai-agent-instructions.md index 51788341937..be0f8e090da 100644 --- a/.cursor/skills/contributor-docs-nav/references/ai-agent-instructions.md +++ b/.cursor/skills/contributor-docs-nav/references/ai-agent-instructions.md @@ -54,8 +54,8 @@ Execute the script when: ### How to run ```bash -cd .cursor/skills/contributor-docs-nav/scripts -node update-nav.js ../../../../CONTRIBUTOR-DOCS +cd CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs +node update-nav.js ``` **Expected time:** ~20-200ms for entire CONTRIBUTOR-DOCS tree (includes automatic link verification) diff --git a/.cursor/skills/conventional-commits/SKILL.md b/.cursor/skills/conventional-commits/SKILL.md index 79317c69652..dd6c36c5d2d 100644 --- a/.cursor/skills/conventional-commits/SKILL.md +++ b/.cursor/skills/conventional-commits/SKILL.md @@ -62,17 +62,20 @@ Source list: `.cursor/config.json` → `git.types`. ## Subject Line Rules -- Use imperative, present tense: "Add feature" not "Added feature" -- Capitalize the first letter -- No period at the end +- Use imperative, present tense: "add feature" not "added feature" +- Start with a lowercase letter — commitlint enforces this (`subject-case` rule forbids sentence-case, start-case, pascal-case, and upper-case) +- No period or white space at the end - Maximum 70 characters ## Body Guidelines -- Explain **what** and **why**, not how +- Explain **why** decisions were made, not how or what - Use imperative mood and present tense - Include motivation for the change - Contrast with previous behavior when relevant +- Use a bullet point for each distinct concept or reason — this also handles line length naturally +- If a bullet's text exceeds 80 characters, continue on the next line flush with the + bullet text (no indentation) ## Conventional Commits @@ -86,29 +89,32 @@ The commit contains the following structural elements, to communicate intent to ## Examples -### Simple fix +### Simple fix (with line wrapping) ``` -fix(api): Handle null response in user endpoint +fix(api): handle null response in user endpoint -The user API could return null for deleted accounts, causing a crash -in the dashboard. Add null check before accessing user properties. +- the user API could return null for deleted accounts, causing a crash +in the dashboard +- add a null check before accessing user properties to prevent the +unhandled exception ``` -### Feature with scope +### Feature with scope (with bullet points) ``` -feat(alerts): Add Slack thread replies for alert updates +feat(alerts): add Slack thread replies for alert updates -When an alert is updated or resolved, post a reply to the original -Slack thread instead of creating a new message. This keeps related -notifications grouped together. +- post a reply to the original Slack thread when an alert is updated +or resolved instead of creating a new message +- keeps related notifications grouped together for easier scanning +- reduces noise in high-volume alert channels ``` ### Refactor ``` -refactor: Extract common validation logic to shared module +refactor: extract common validation logic to shared module Move duplicate validation code from three endpoints into a shared validator class. No behavior change. @@ -117,7 +123,7 @@ validator class. No behavior change. ### Breaking change ``` -feat(api)!: Remove deprecated v1 endpoints +feat(api)!: remove deprecated v1 endpoints Remove all v1 API endpoints that were deprecated in version 23.1. Clients should migrate to v2 endpoints. @@ -128,7 +134,7 @@ BREAKING CHANGE: v1 endpoints no longer available ## Revert Format ``` -revert: feat(api): Add new endpoint +revert: feat(api): add new endpoint This reverts commit abc123def456. diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml index 4e85eb0b938..da289b60f41 100644 --- a/.github/workflows/preview-docs.yml +++ b/.github/workflows/preview-docs.yml @@ -74,6 +74,12 @@ jobs: - name: Generate Custom Elements Manifest run: yarn workspace @spectrum-web-components/1st-gen docs:analyze + - name: Analyze 2nd-gen components + run: yarn workspace @adobe/spectrum-wc analyze + + - name: Generate LLM reference files + run: yarn generate:llms + - name: Move CEM to Storybook directory run: cp 1st-gen/projects/documentation/custom-elements.json 1st-gen/storybook/ @@ -87,7 +93,7 @@ jobs: run: yarn workspace @spectrum-web-components/1st-gen storybook:build - name: Build second-gen Storybook - run: yarn workspace @spectrum-web-components/2nd-gen storybook:build + run: yarn workspace @adobe/spectrum-wc storybook:build ## --- DEPLOY TO AZURE BLOB STORAGE --- ## - name: Setup AzCopy diff --git a/.github/workflows/publish-2ndgen-docs.yml b/.github/workflows/publish-2ndgen-docs.yml new file mode 100644 index 00000000000..8c8d8ed1912 --- /dev/null +++ b/.github/workflows/publish-2ndgen-docs.yml @@ -0,0 +1,70 @@ +name: Publish 2nd-Gen Documentation + +on: + workflow_dispatch: + push: + branches: + - main + +permissions: + contents: read + +concurrency: + group: publish-2ndgen-docs + cancel-in-progress: true + +env: + AZCOPY_AUTO_LOGIN_TYPE: SPN + AZCOPY_SPA_APPLICATION_ID: ${{ secrets.AZURE_CLIENT_ID }} + AZCOPY_SPA_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} + AZCOPY_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + name: Build and Deploy 2nd-Gen Docs + timeout-minutes: 30 + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Use Node version from .nvmrc + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: yarn + + - name: Enable Corepack + run: corepack enable + + - name: Check for cached dependencies + continue-on-error: true + id: cache-dependencies + uses: actions/cache@v4 + with: + path: | + .cache/yarn + node_modules + key: ubuntu-latest-${{ hashFiles('.nvmrc', 'package.json', 'yarn.lock') }} + + - name: Install dependencies + run: yarn install --immutable + + - name: Build all generations + run: yarn build + + - name: Build 2nd-gen Storybook + run: yarn workspace @spectrum-web-components/2nd-gen storybook:build + + - name: Setup AzCopy + uses: ./.github/actions/setup-azcopy + + - name: Deploy to Azure Blob Storage + run: | + echo "Deploying 2nd-gen docs to docs/" + azcopy sync "2nd-gen/packages/swc/storybook-static/" \ + "https://swcpreviews.blob.core.windows.net/\$web/docs/" \ + --recursive \ + --delete-destination=true \ + --from-to LocalBlob + echo "Deployed to https://swcpreviews.z13.web.core.windows.net/docs/" diff --git a/.github/workflows/publish-docs-site.yml b/.github/workflows/publish-docs-site.yml index 81f57c3c21e..5cb259ad663 100644 --- a/.github/workflows/publish-docs-site.yml +++ b/.github/workflows/publish-docs-site.yml @@ -22,6 +22,12 @@ jobs: - name: Generate Custom Elements Manifest run: yarn workspace @spectrum-web-components/1st-gen docs:analyze + - name: Analyze 2nd-gen components + run: yarn workspace @adobe/spectrum-wc analyze + + - name: Generate LLM reference files + run: yarn generate:llms + - name: Move CEM to Storybook directory run: cp 1st-gen/projects/documentation/custom-elements.json 1st-gen/storybook/ diff --git a/.gitignore b/.gitignore index e9e3ad259b5..03b2f3f855c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ searchIndex.json # dependency folders coverage lib +!scripts/lib # build artifacts custom-elements.json @@ -124,6 +125,11 @@ test/* 2nd-gen/packages/*/dist/ 2nd-gen/packages/*/custom-elements.json 2nd-gen/packages/*/storybook-static +2nd-gen/packages/swc/.storybook/contributor-docs/ +2nd-gen/packages/swc/public/llms.txt +2nd-gen/packages/swc/public/llms-full.txt +2nd-gen/packages/swc/public/sitemap.xml +2nd-gen/packages/swc/public/reference # npm assets node_modules diff --git a/.husky/pre-commit b/.husky/pre-commit index 017e2a12451..e67fb3a5f1d 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,7 @@ yarn lint-staged --allow-empty + +# If any CONTRIBUTOR-DOCS files are staged, regenerate navigation and verify links +if git diff --cached --name-only | grep -q "^CONTRIBUTOR-DOCS/"; then + node CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/update-nav.js "$(pwd)/CONTRIBUTOR-DOCS" + git add CONTRIBUTOR-DOCS/ +fi diff --git a/.vscode/settings.json b/.vscode/settings.json index c69d05d568d..a50353789e3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -70,6 +70,7 @@ "seafoam", "sidenav", "tabindex", + "unsuffixed", "valuenow", "valuetext" ], diff --git a/1st-gen/package.json b/1st-gen/package.json index c4536f38c1d..cee20fc0a9b 100644 --- a/1st-gen/package.json +++ b/1st-gen/package.json @@ -35,9 +35,10 @@ "dev:core": "yarn workspace @spectrum-web-components/core dev", "docs:analyze": "cem analyze --globs \"packages/**/*.ts\" --exclude \"**/*.d.ts\" --exclude \"**/stories/**\" --exclude \"**/icons/**\" --exclude \"**/elements/**\" --outdir projects/documentation --litelement", "docs:build": "yarn workspace documentation build", - "docs:ci": "yarn docs:analyze && run-p docs:production storybook:build && cp projects/documentation/custom-elements.json projects/documentation/dist/storybook", - "docs:preview": "yarn docs:analyze && run-p docs:build storybook:build && cp projects/documentation/custom-elements.json projects/documentation/dist/storybook", + "docs:ci": "yarn docs:analyze && yarn generate:llms && run-p docs:production storybook:build && cp projects/documentation/custom-elements.json projects/documentation/dist/storybook", + "docs:preview": "yarn docs:analyze && yarn generate:llms && run-p docs:build storybook:build && cp projects/documentation/custom-elements.json projects/documentation/dist/storybook", "docs:production": "yarn workspace documentation build:production", + "generate:llms": "node ../scripts/generate-llms-txt.js", "docs:review": "alex packages/**/*.md", "docs:start": "yarn workspace documentation serve --watch", "find": "test -f custom-elements.json", diff --git a/1st-gen/packages/action-menu/src/ActionMenu.ts b/1st-gen/packages/action-menu/src/ActionMenu.ts index 7095f8cbdff..fe43004ba6d 100644 --- a/1st-gen/packages/action-menu/src/ActionMenu.ts +++ b/1st-gen/packages/action-menu/src/ActionMenu.ts @@ -433,14 +433,17 @@ export class ActionMenu extends ObserveSlotPresence( protected handleTooltipSlotchange( event: Event & { target: HTMLSlotElement } ): void { - this.tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + const tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + this.tooltipEl = tooltipEl; // Set up trigger element for self-managed tooltips - if (this.tooltipEl?.selfManaged) { - // Wait for the tooltip to be fully initialized + if (tooltipEl?.selfManaged) { + if (this.button) { + tooltipEl.triggerElement = this.button; + } this.updateComplete.then(() => { - if (this.tooltipEl?.overlayElement && this.button) { - this.tooltipEl.overlayElement.triggerElement = this.button; + if (tooltipEl.selfManaged && this.button) { + tooltipEl.triggerElement = this.button; } }); } @@ -1028,12 +1031,8 @@ export class ActionMenu extends ObserveSlotPresence( public override connectedCallback(): void { super.connectedCallback(); this.updateComplete.then(() => { - if (!this.tooltipEl?.selfManaged) { - return; - } - const overlayElement = this.tooltipEl.overlayElement; - if (overlayElement) { - overlayElement.triggerElement = this.button; + if (this.tooltipEl?.selfManaged && this.button) { + this.tooltipEl.triggerElement = this.button; } }); diff --git a/1st-gen/packages/alert-banner/package.json b/1st-gen/packages/alert-banner/package.json index 8b0a1802074..6764678488e 100644 --- a/1st-gen/packages/alert-banner/package.json +++ b/1st-gen/packages/alert-banner/package.json @@ -56,7 +56,6 @@ "dependencies": { "@spectrum-web-components/base": "1.11.2", "@spectrum-web-components/button": "1.11.2", - "@spectrum-web-components/core": "0.0.4", "@spectrum-web-components/icons-workflow": "1.11.2" }, "keywords": [ diff --git a/1st-gen/packages/alert-banner/src/AlertBanner.base.ts b/1st-gen/packages/alert-banner/src/AlertBanner.base.ts new file mode 100644 index 00000000000..c6b38b983f8 --- /dev/null +++ b/1st-gen/packages/alert-banner/src/AlertBanner.base.ts @@ -0,0 +1,137 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { + CSSResultArray, + PropertyValues, + SpectrumElement, + TemplateResult, +} from '@spectrum-web-components/base'; +import { property } from '@spectrum-web-components/base/src/decorators.js'; + +import { + ALERT_BANNER_VALID_VARIANTS, + type AlertBannerVariant, +} from './AlertBanner.types.js'; + +/** + * An alert banner shows pressing and high-signal messages, such as system alerts. + * It is meant to be noticed and prompt users to take action. + * + * @slot - The main content of the alert banner. + * @slot action - An optional action button for the alert banner. + * + * @fires close - Dispatched when the alert banner is dismissed. Cancelable. + */ +export abstract class AlertBannerBase extends SpectrumElement { + public static override get styles(): CSSResultArray { + return []; + } + + // ────────────────── + // SHARED API + // ────────────────── + + /** + * Controls the display of the alert banner. + */ + @property({ type: Boolean, reflect: true }) + public open = false; + + /** + * Whether to include an icon-only close button to dismiss the alert banner. + */ + @property({ type: Boolean, reflect: true }) + public dismissible = false; + + /** + * The variant applies specific styling when set to `negative` or `info`; + * `variant` attribute is removed when it's passed an invalid variant. + */ + @property({ type: String }) + public set variant(variant: AlertBannerVariant) { + if (variant === this.variant) { + return; + } + const oldValue = this.variant; + + if (this.isValidVariant(variant)) { + this.setAttribute('variant', variant); + this._variant = variant; + } else { + this.removeAttribute('variant'); + this._variant = ''; + + if (window.__swc?.DEBUG) { + window.__swc.warn( + this, + `<${this.localName}> element expects the "variant" attribute to be one of the following:`, + 'https://opensource.adobe.com/spectrum-web-components/components/alert-banner/#variants', + { + issues: [...ALERT_BANNER_VALID_VARIANTS], + } + ); + } + } + this.requestUpdate('variant', oldValue); + } + + public get variant(): AlertBannerVariant { + return this._variant; + } + + private _variant: AlertBannerVariant = ''; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + protected isValidVariant(variant: string): boolean { + return (ALERT_BANNER_VALID_VARIANTS as readonly string[]).includes(variant); + } + + protected abstract renderIcon(variant: string): TemplateResult; + + protected shouldClose(): void { + const applyDefault = this.dispatchEvent( + new CustomEvent('close', { + composed: true, + bubbles: true, + cancelable: true, + }) + ); + if (applyDefault) { + this.close(); + } + } + + public close(): void { + this.open = false; + } + + protected handleKeydown(event: KeyboardEvent): void { + if (event.code === 'Escape' && this.dismissible) { + this.shouldClose(); + } + } + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + + if (changes.has('open')) { + if (this.open) { + this.addEventListener('keydown', this.handleKeydown); + } else { + this.removeEventListener('keydown', this.handleKeydown); + } + } + } +} diff --git a/1st-gen/packages/alert-banner/src/AlertBanner.ts b/1st-gen/packages/alert-banner/src/AlertBanner.ts index c6e1b2acfba..3c659c56af1 100644 --- a/1st-gen/packages/alert-banner/src/AlertBanner.ts +++ b/1st-gen/packages/alert-banner/src/AlertBanner.ts @@ -14,16 +14,14 @@ import { html, TemplateResult, } from '@spectrum-web-components/base'; -import { - AlertBannerBase, - AlertBannerVariants, -} from '@spectrum-web-components/core/components/alert-banner'; import '@spectrum-web-components/button/sp-close-button.js'; import '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js'; import '@spectrum-web-components/icons-workflow/icons/sp-icon-info.js'; import styles from './alert-banner.css.js'; +import { AlertBannerBase } from './AlertBanner.base.js'; +import type { AlertBannerVariants } from './AlertBanner.types.js'; export type { AlertBannerVariants }; diff --git a/1st-gen/packages/alert-banner/src/AlertBanner.types.ts b/1st-gen/packages/alert-banner/src/AlertBanner.types.ts new file mode 100644 index 00000000000..43c94a553e9 --- /dev/null +++ b/1st-gen/packages/alert-banner/src/AlertBanner.types.ts @@ -0,0 +1,27 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +export const ALERT_BANNER_VALID_VARIANTS = [ + 'neutral', + 'info', + 'negative', +] as const satisfies readonly string[]; + +export type AlertBannerVariant = + | (typeof ALERT_BANNER_VALID_VARIANTS)[number] + | ''; + +/** + * @deprecated Use `AlertBannerVariant` instead. + * Kept as `string` for backward compatibility with 1st-gen. + */ +export type AlertBannerVariants = string; diff --git a/1st-gen/packages/asset/package.json b/1st-gen/packages/asset/package.json index cfb6dff3f0d..c84a5c53131 100644 --- a/1st-gen/packages/asset/package.json +++ b/1st-gen/packages/asset/package.json @@ -58,8 +58,7 @@ ], "types": "./src/index.d.ts", "dependencies": { - "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4" + "@spectrum-web-components/base": "1.11.2" }, "keywords": [ "design-system", diff --git a/1st-gen/packages/asset/src/Asset.base.ts b/1st-gen/packages/asset/src/Asset.base.ts new file mode 100644 index 00000000000..0a58dd3eef5 --- /dev/null +++ b/1st-gen/packages/asset/src/Asset.base.ts @@ -0,0 +1,69 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base'; +import { property } from '@spectrum-web-components/base/src/decorators.js'; + +import { ASSET_VARIANTS, type AssetVariant } from './Asset.types.js'; + +export abstract class AssetBase extends SpectrumElement { + // ───────────────────────── + // API TO OVERRIDE + // ───────────────────────── + + /** + * @internal + * + * A readonly array of all valid variants for the asset. + */ + static readonly VARIANTS: readonly AssetVariant[] = ASSET_VARIANTS; + + // ───────────────── + // SHARED API + // ───────────────── + + /** + * The variant of the asset. When not provided, slot content is rendered (e.g., an image). + */ + @property({ type: String, reflect: true }) + public variant: AssetVariant | undefined; + + /** + * Accessible label for the asset's file or folder variant. + */ + @property() + public label = ''; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + if (window.__swc?.DEBUG) { + const constructor = this.constructor as typeof AssetBase; + if ( + typeof this.variant !== 'undefined' && + !constructor.VARIANTS.includes(this.variant) + ) { + window.__swc.warn( + this, + `<${this.localName}> element expects the "variant" attribute to be one of the following:`, + 'https://opensource.adobe.com/spectrum-web-components/components/asset/', + { + issues: [...constructor.VARIANTS], + } + ); + } + } + } +} diff --git a/1st-gen/packages/asset/src/Asset.ts b/1st-gen/packages/asset/src/Asset.ts index bcba71eeb00..d10172a4891 100644 --- a/1st-gen/packages/asset/src/Asset.ts +++ b/1st-gen/packages/asset/src/Asset.ts @@ -15,8 +15,8 @@ import { html, TemplateResult, } from '@spectrum-web-components/base'; -import { AssetBase } from '@spectrum-web-components/core/components/asset'; +import { AssetBase } from './Asset.base.js'; import styles from './asset.css.js'; const file = (label: string): TemplateResult => html` diff --git a/1st-gen/packages/asset/src/Asset.types.ts b/1st-gen/packages/asset/src/Asset.types.ts new file mode 100644 index 00000000000..e67d9b25f2f --- /dev/null +++ b/1st-gen/packages/asset/src/Asset.types.ts @@ -0,0 +1,18 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +export const ASSET_VARIANTS = [ + 'file', + 'folder', +] as const satisfies readonly string[]; + +export type AssetVariant = (typeof ASSET_VARIANTS)[number]; diff --git a/1st-gen/packages/badge/package.json b/1st-gen/packages/badge/package.json index 62ef282d955..d89cf59a305 100644 --- a/1st-gen/packages/badge/package.json +++ b/1st-gen/packages/badge/package.json @@ -55,7 +55,6 @@ "types": "./src/index.d.ts", "dependencies": { "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4", "@spectrum-web-components/shared": "1.11.2" }, "keywords": [ diff --git a/1st-gen/packages/badge/src/Badge.base.ts b/1st-gen/packages/badge/src/Badge.base.ts new file mode 100644 index 00000000000..40f30547404 --- /dev/null +++ b/1st-gen/packages/badge/src/Badge.base.ts @@ -0,0 +1,149 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base'; +import { property } from '@spectrum-web-components/base/src/decorators.js'; +import { SizedMixin } from '@spectrum-web-components/base/src/sizedMixin.js'; +import { ObserveSlotPresence } from '@spectrum-web-components/shared/src/observe-slot-presence.js'; +import { ObserveSlotText } from '@spectrum-web-components/shared/src/observe-slot-text.js'; + +import { + BADGE_VARIANTS_SEMANTIC, + type BadgeVariant, + FIXED_VALUES, + type FixedValues, +} from './Badge.types.js'; + +/** + * A badge component that displays short, descriptive information about an element. + * Badges are typically used to indicate status, categories, or provide supplementary information. + * + * @attribute {ElementSize} size - The size of the badge. + * + * @slot - Text label of the badge. + * @slot icon - Optional icon that appears to the left of the label + */ +export abstract class BadgeBase extends SizedMixin( + ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]'), ''), + { + noDefaultSize: true, + } +) { + // ───────────────────────── + // API TO OVERRIDE + // ───────────────────────── + + /** + * @internal + * + * A readonly array of the valid color variants for the badge. + */ + static readonly VARIANTS_COLOR: readonly string[]; + + /** + * @internal + * + * A readonly array of all valid variants for the badge. + */ + static readonly VARIANTS: readonly string[]; + + /** + * @internal + * + * The variant of the badge. + */ + @property({ type: String, reflect: true }) + public variant: BadgeVariant = 'informative'; + + // ────────────────── + // SHARED API + // ────────────────── + + /** + * @internal + */ + static readonly FIXED_VALUES: readonly string[] = FIXED_VALUES; + + /** + * @internal + */ + static readonly VARIANTS_SEMANTIC: readonly string[] = + BADGE_VARIANTS_SEMANTIC; + + /** + * The fixed position of the badge. + */ + @property({ reflect: true }) + public get fixed(): FixedValues | undefined { + return this._fixed; + } + + public set fixed(fixed: FixedValues | undefined) { + if (fixed === this.fixed) { + return; + } + const oldValue = this.fixed; + this._fixed = fixed; + if (fixed) { + this.setAttribute('fixed', fixed); + } else { + this.removeAttribute('fixed'); + } + this.requestUpdate('fixed', oldValue); + } + + private _fixed?: FixedValues; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + /** + * Used for rendering gap when the badge has an icon. + * + * @internal + */ + protected get hasIcon(): boolean { + return this.slotContentIsPresent; + } + + protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + const constructor = this.constructor as typeof BadgeBase; + if (!constructor.VARIANTS.includes(this.variant)) { + window.__swc.warn( + this, + `<${this.localName}> element expect the "variant" attribute to be one of the following:`, + 'https://opensource.adobe.com/spectrum-web-components/components/badge/#variants', + { + issues: [...constructor.VARIANTS], + } + ); + } + // Check outline property if it exists (S2 only) + if ( + 'outline' in this && + (this as { outline: boolean }).outline === true && + !constructor.VARIANTS_SEMANTIC.includes(this.variant) + ) { + window.__swc.warn( + this, + `<${this.localName}> element only supports the outline styling if the variant is a semantic color variant.`, + 'https://opensource.adobe.com/spectrum-web-components/components/badge/#variants', + { + issues: [...constructor.VARIANTS_SEMANTIC], + } + ); + } + } + } +} diff --git a/1st-gen/packages/badge/src/Badge.ts b/1st-gen/packages/badge/src/Badge.ts index 63b644e89e8..acb7116fdb3 100644 --- a/1st-gen/packages/badge/src/Badge.ts +++ b/1st-gen/packages/badge/src/Badge.ts @@ -17,16 +17,16 @@ import { TemplateResult, } from '@spectrum-web-components/base'; import { property } from '@spectrum-web-components/base/src/decorators.js'; + +import { BadgeBase } from './Badge.base.js'; +import styles from './badge.css.js'; import { BADGE_VARIANTS_COLOR_S1, BADGE_VARIANTS_S1, - BadgeBase, type BadgeVariantS1, FIXED_VALUES as FIXED_VALUES_BASE, type FixedValues as FixedValuesBase, -} from '@spectrum-web-components/core/components/badge'; - -import styles from './badge.css.js'; +} from './Badge.types.js'; /** * @deprecated The `BADGE_VARIANTS` export is deprecated and will be removed diff --git a/1st-gen/packages/badge/src/Badge.types.ts b/1st-gen/packages/badge/src/Badge.types.ts new file mode 100644 index 00000000000..68b7d95a9b1 --- /dev/null +++ b/1st-gen/packages/badge/src/Badge.types.ts @@ -0,0 +1,114 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import type { ElementSize } from '@spectrum-web-components/base/src/sizedMixin.js'; + +// ────────────────── +// SHARED +// ────────────────── + +export const BADGE_VALID_SIZES = [ + 's', + 'm', + 'l', + 'xl', +] as const satisfies readonly ElementSize[]; + +export const BADGE_VARIANTS_SEMANTIC = [ + 'accent', + 'informative', + 'neutral', + 'positive', + 'notice', + 'negative', +] as const; + +export const BADGE_VARIANTS_COLOR = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', + 'gray', + 'red', + 'orange', + 'chartreuse', + 'celery', + 'green', + 'cyan', + 'blue', + 'pink', + 'turquoise', + 'brown', + 'cinnamon', + 'silver', +] as const; + +export const FIXED_VALUES = [ + 'block-start', + 'block-end', + 'inline-start', + 'inline-end', +] as const; + +// ────────────────────────────────────────── +// S1-ONLY (remove with 1st-gen) +// ────────────────────────────────────────── + +export const BADGE_VARIANTS_COLOR_S1 = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', + 'gray', + 'red', + 'orange', + 'chartreuse', + 'celery', + 'green', + 'cyan', + 'blue', +] as const satisfies readonly BadgeColorVariant[]; + +export const BADGE_VARIANTS_S1 = [ + ...BADGE_VARIANTS_SEMANTIC, + ...BADGE_VARIANTS_COLOR_S1, +] as const; + +// ────────────────── +// CANONICAL +// ────────────────── + +export const BADGE_VARIANTS = [ + ...BADGE_VARIANTS_SEMANTIC, + ...BADGE_VARIANTS_COLOR, +] as const; + +// ────────────────── +// TYPES +// ────────────────── + +// Shared +export type FixedValues = (typeof FIXED_VALUES)[number]; +export type BadgeSize = (typeof BADGE_VALID_SIZES)[number]; +export type BadgeSemanticVariant = (typeof BADGE_VARIANTS_SEMANTIC)[number]; + +// S1-only (remove with 1st-gen) +export type BadgeColorVariantS1 = (typeof BADGE_VARIANTS_COLOR_S1)[number]; // remove with 1st-gen +export type BadgeVariantS1 = (typeof BADGE_VARIANTS_S1)[number]; // remove with 1st-gen + +// Canonical +export type BadgeColorVariant = (typeof BADGE_VARIANTS_COLOR)[number]; +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; diff --git a/1st-gen/packages/button/src/ButtonBase.ts b/1st-gen/packages/button/src/ButtonBase.ts index 2a6d023c61b..eee581dc22a 100644 --- a/1st-gen/packages/button/src/ButtonBase.ts +++ b/1st-gen/packages/button/src/ButtonBase.ts @@ -114,9 +114,17 @@ export class ButtonBase extends ObserveSlotText(LikeAnchor(Focusable), '', [ } if (this.anchorElement) { + // Check if the click already went through the anchor element. + // If so, the browser will handle navigation naturally and we + // don't need to proxy the click (which would cause double navigation). + const path = event?.composedPath() || []; + if (path.includes(this.anchorElement)) { + return false; + } // Click HTML anchor element by proxy, but only for non-modified clicks this.anchorElement.click(); handled = true; + return handled; // if the button type is `submit` or `reset` } else if (this.type !== 'button') { // create an HTML Button Element by proxy, click it, and remove it @@ -159,11 +167,9 @@ export class ButtonBase extends ObserveSlotText(LikeAnchor(Focusable), '', [ switch (code) { case 'Space': event.preventDefault(); - // allows button to activate when `Space` is pressed - if (typeof this.href === 'undefined') { - this.addEventListener('keyup', this.handleKeyup); - this.active = true; - } + // allows button or link to activate when `Space` is pressed + this.addEventListener('keyup', this.handleKeyup); + this.active = true; break; default: break; diff --git a/1st-gen/packages/divider/package.json b/1st-gen/packages/divider/package.json index 6685a7f1b4a..c26afd46c81 100644 --- a/1st-gen/packages/divider/package.json +++ b/1st-gen/packages/divider/package.json @@ -55,8 +55,7 @@ ], "types": "./src/index.d.ts", "dependencies": { - "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4" + "@spectrum-web-components/base": "1.11.2" }, "keywords": [ "design-system", diff --git a/1st-gen/packages/divider/src/Divider.base.ts b/1st-gen/packages/divider/src/Divider.base.ts new file mode 100644 index 00000000000..5ab334db5ea --- /dev/null +++ b/1st-gen/packages/divider/src/Divider.base.ts @@ -0,0 +1,74 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base'; +import { property } from '@spectrum-web-components/base/src/decorators.js'; +import { SizedMixin } from '@spectrum-web-components/base/src/sizedMixin.js'; + +import { + DIVIDER_STATIC_COLORS, + DIVIDER_VALID_SIZES, + type DividerStaticColor, +} from './Divider.types.js'; + +/** + * A divider separates and distinguishes sections of content or groups of menu items. + * + * @attribute {ElementSize} size - The size of the divider. + */ +export abstract class DividerBase extends SizedMixin(SpectrumElement, { + validSizes: DIVIDER_VALID_SIZES, + noDefaultSize: true, +}) { + // ────────────────── + // SHARED API + // ────────────────── + + /** + * @internal + * + * A readonly array of the valid static color variants for the divider. + */ + static readonly STATIC_COLORS: readonly string[] = DIVIDER_STATIC_COLORS; + + /** + * Whether the divider is vertical. If false, the divider is horizontal. The default is false. + */ + @property({ type: Boolean, reflect: true }) + public vertical = false; + + /** + * The static color variant to use for the divider. + */ + @property({ reflect: true, attribute: 'static-color' }) + public staticColor?: DividerStaticColor; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + protected override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + this.setAttribute('role', 'separator'); + } + + protected override updated(changed: PropertyValues): void { + super.updated(changed); + if (changed.has('vertical')) { + if (this.vertical) { + this.setAttribute('aria-orientation', 'vertical'); + } else { + this.removeAttribute('aria-orientation'); + } + } + } +} diff --git a/1st-gen/packages/divider/src/Divider.ts b/1st-gen/packages/divider/src/Divider.ts index 55ec8c98661..350e3445b1e 100644 --- a/1st-gen/packages/divider/src/Divider.ts +++ b/1st-gen/packages/divider/src/Divider.ts @@ -15,8 +15,8 @@ import { html, TemplateResult, } from '@spectrum-web-components/base'; -import { DividerBase } from '@spectrum-web-components/core/components/divider'; +import { DividerBase } from './Divider.base.js'; import styles from './divider.css.js'; /** diff --git a/1st-gen/packages/divider/src/Divider.types.ts b/1st-gen/packages/divider/src/Divider.types.ts new file mode 100644 index 00000000000..49f47df2dbb --- /dev/null +++ b/1st-gen/packages/divider/src/Divider.types.ts @@ -0,0 +1,27 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import type { ElementSize } from '@spectrum-web-components/base/src/sizedMixin.js'; + +export const DIVIDER_VALID_SIZES = [ + 's', + 'm', + 'l', +] as const satisfies readonly ElementSize[]; +export const DIVIDER_STATIC_COLORS = [ + 'white', + 'black', +] as const satisfies readonly string[]; + +export type DividerStaticColor = (typeof DIVIDER_STATIC_COLORS)[number]; + +export type DividerSize = (typeof DIVIDER_VALID_SIZES)[number]; diff --git a/1st-gen/packages/link/src/spectrum-link.css b/1st-gen/packages/link/src/spectrum-link.css index ce7d3b4cf78..a6f8244b260 100644 --- a/1st-gen/packages/link/src/spectrum-link.css +++ b/1st-gen/packages/link/src/spectrum-link.css @@ -47,6 +47,7 @@ } a { + /* stylelint-disable-next-line declaration-property-value-no-unknown */ text-decoration-skip: objects; color: var(--highcontrast-link-text-color, var(--mod-link-text-color, var(--mod-link-text-color-primary-default, var(--spectrum-accent-content-color-default)))); text-decoration: underline; diff --git a/1st-gen/packages/number-field/README.md b/1st-gen/packages/number-field/README.md index ed5b9b62034..cb5646c9cd1 100644 --- a/1st-gen/packages/number-field/README.md +++ b/1st-gen/packages/number-field/README.md @@ -341,6 +341,38 @@ The number field works with the following interactions: The input value incrementally increases or decreases by the value of the `step` attribute. The shift key can be used to apply steps at 10 times (or the value of the `step-modifier` attribute times) their normal rate. +#### Truncated value tooltip + +Like [``](../textfield), number field will show a tooltip with the full formatted value when the single-line input content is visually truncated. This supports long formatted content (for example currency values) in constrained widths and supports accessibility when users adjust text spacing ([WCAG 1.4.12](https://www.w3.org/WAI/WCAG21/Understanding/text-spacing.html)). + +Stepper visibility affects available inline space, so truncation may occur at different widths when `hide-stepper` is toggled. The full value is available on hover and keyboard focus so screen reader users can access it via the control's value. As with textfield, the tooltip defaults to placement `bottom`; use the `tooltip-placement` attribute with a valid placement value (e.g. `top`, `right`, `left`). Placement may flip when space is limited so the tooltip stays in view. + +```html +Show stepper + +Hide stepper + +``` + #### Default value The `` component doesn't manage a default value by itself. This means that consumers can set the value of the number-field as an empty string by clearing the input. If we want the number-field to reset to a `default-value` when the user clears the input, we can listen for the `change` event on the number-field component and set its value to the desired `default-value` if the input is empty. diff --git a/1st-gen/packages/number-field/src/NumberField.ts b/1st-gen/packages/number-field/src/NumberField.ts index 36f48b0f97b..daa3d626b60 100644 --- a/1st-gen/packages/number-field/src/NumberField.ts +++ b/1st-gen/packages/number-field/src/NumberField.ts @@ -546,6 +546,22 @@ export class NumberField extends TextfieldBase { this._trackingValue = value; this.inputElement.value = value; this.inputElement.setSelectionRange(selectionStart, selectionStart); + // Controller uses an intentional multi-phase update (see TruncatedValueTooltipController): + // refresh() may queue a second render so the tooltip appears; we sync tooltip text after + // updateComplete so the tooltip DOM exists. + const justBecameTruncated = + this.truncatedValueTooltipController.refresh(); + if (justBecameTruncated) { + this.updateComplete.then(() => { + this.truncatedValueTooltipController.syncTooltipText( + this.inputElement?.value ?? this.displayValue + ); + }); + } else { + this.truncatedValueTooltipController.syncTooltipText( + this.inputElement?.value ?? this.displayValue + ); + } return; } else { this.inputElement.value = this.indeterminate diff --git a/1st-gen/packages/number-field/stories/number-field.stories.ts b/1st-gen/packages/number-field/stories/number-field.stories.ts index 0c295d16a49..14f4c40d9e4 100644 --- a/1st-gen/packages/number-field/stories/number-field.stories.ts +++ b/1st-gen/packages/number-field/stories/number-field.stories.ts @@ -348,6 +348,72 @@ units.args = { value: 24, }; +export const TruncatedValueTooltip = (args: StoryArgs): TemplateResult => { + const value = args.value ?? 123456; + return html` + + Truncated value (stepper visible) + + + + Truncated value (stepper hidden) + + + + Truncated value (stepper visible, valid) + + + + Truncated value (stepper hidden, invalid) + + + `; +}; + +TruncatedValueTooltip.args = { + value: 123456, +}; + export const pixels = (args: StoryArgs): TemplateResult => { return html` Enter a lengths in pixels diff --git a/1st-gen/packages/number-field/test/number-field.test.ts b/1st-gen/packages/number-field/test/number-field.test.ts index 0a081781362..c487ffa2dfd 100644 --- a/1st-gen/packages/number-field/test/number-field.test.ts +++ b/1st-gen/packages/number-field/test/number-field.test.ts @@ -95,6 +95,261 @@ describe('NumberField', () => { await expect(el).to.be.accessible(); }); + describe('truncated value tooltip', () => { + it('renders truncated value tooltip when neither valid nor invalid and value is clipped', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(el.focusElement.value); + }); + it('renders truncated value tooltip when valid and value is clipped', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(el.focusElement.value); + }); + + it('renders truncated value tooltip when invalid and value is clipped', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(el.focusElement.value); + }); + it('does not render when the displayed value fits', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('does not render truncated value tooltip when disabled and value is clipped', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('uses default placement "bottom" for truncated value tooltip when not set', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ) as { placement?: string }; + expect(tooltipOverlay).to.exist; + expect(tooltipOverlay.placement).to.equal('bottom'); + }); + it('uses tooltip-placement when set', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ) as { placement?: string }; + expect(tooltipOverlay).to.exist; + expect(tooltipOverlay.placement).to.equal('top'); + }); + + it('updates truncated value tooltip text for realtime deletions and insertions while focused', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + + const tooltipText = () => + el.shadowRoot + ?.querySelector('#truncated-value-tooltip sp-tooltip') + ?.textContent?.trim(); + + expect(tooltipText()).to.equal(el.focusElement.value); + + el.focus(); + await sendKeys({ press: 'Backspace' }); + await waitUntil( + () => tooltipText() === el.focusElement.value, + 'Tooltip text should update after backspace' + ); + + await sendKeys({ type: '0' }); + await waitUntil( + () => tooltipText() === el.focusElement.value, + 'Tooltip text should update after insertion' + ); + }); + + it('renders truncated value tooltip when a fitting value grows to overflow during typing', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + expect( + el.shadowRoot?.querySelector('#truncated-value-tooltip'), + 'Tooltip should not render before the value overflows' + ).to.not.exist; + + el.focus(); + await sendKeys({ type: '234567890123456789' }); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip should appear when value grows and becomes truncated' + ); + }); + + it('keeps tooltip mounted while focused after value shrinks, then removes it on blur when value fits', async () => { + const el = await fixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip should be rendered for initially truncated value' + ); + + el.focus(); + const input = el.focusElement; + input.value = '1'; + input.dispatchEvent( + new InputEvent('input', { + bubbles: true, + composed: true, + data: null, + inputType: 'deleteContentBackward', + }) + ); + await elementUpdated(el); + + expect( + el.shadowRoot?.querySelector('#truncated-value-tooltip'), + 'Tooltip should remain mounted while focused even when value now fits' + ).to.exist; + + el.blur(); + await elementUpdated(el); + + expect( + el.shadowRoot?.querySelector('#truncated-value-tooltip'), + 'Tooltip should be removed after blur when value fits' + ).to.not.exist; + }); + }); describe('receives input', () => { it('without language context', async () => { const el = await getElFrom(Default({ value: 1337 })); @@ -572,9 +827,12 @@ describe('NumberField', () => { it('has a useful `value` - percent', async () => { el.formatOptions = { style: 'percent' }; el.value = 0.45; + await elementUpdated(el); expect(el.value).to.equal(0.45); el.focus(); + await elementUpdated(el); await sendKeys({ type: '7' }); // Visible text: 45%7 + await elementUpdated(el); expect(inputSpy.calledWith(4.57), 'first input').to.be.true; await sendKeys({ press: 'Backspace' }); // Visible text: 45% await sendKeys({ press: 'Backspace' }); // Visible text: 45 @@ -594,8 +852,10 @@ describe('NumberField', () => { }; await elementUpdated(el); el.value = 45; + await elementUpdated(el); expect(el.value).to.equal(45); el.focus(); + await elementUpdated(el); await sendKeys({ type: '7' }); // Visible text: EUR 45.007 expect(el.value).to.equal(45.007); expect(inputSpy.calledWith(el.value), 'first input').to.be.true; diff --git a/1st-gen/packages/overlay/src/HoverController.ts b/1st-gen/packages/overlay/src/HoverController.ts index 103080c816e..ac77ae8c34c 100644 --- a/1st-gen/packages/overlay/src/HoverController.ts +++ b/1st-gen/packages/overlay/src/HoverController.ts @@ -19,6 +19,7 @@ import { InteractionTypes, lastInteractionType, } from './InteractionController.js'; +import type { Overlay } from './Overlay.js'; export class HoverController extends InteractionController { override type = InteractionTypes.hover; @@ -131,6 +132,11 @@ export class HoverController extends InteractionController { if (!this.overlay || !this.overlay.elements.length) { return; } + // When describeTrigger is 'none', do not set aria-describedby on the trigger (visual hint only). + const overlay = this.overlay as Overlay; + if (overlay.describeTrigger === 'none') { + return; + } const triggerRoot = this.target.getRootNode(); const contentRoot = this.overlay.elements[0].getRootNode(); diff --git a/1st-gen/packages/overlay/src/LongpressController.ts b/1st-gen/packages/overlay/src/LongpressController.ts index f3763a97540..6ee9c6faee3 100644 --- a/1st-gen/packages/overlay/src/LongpressController.ts +++ b/1st-gen/packages/overlay/src/LongpressController.ts @@ -22,6 +22,7 @@ import { InteractionController, InteractionTypes, } from './InteractionController.js'; +import type { Overlay } from './Overlay.js'; const LONGPRESS_DURATION = 300; export const LONGPRESS_INSTRUCTIONS = { @@ -139,6 +140,11 @@ export class LongpressController extends InteractionController { ) { return; } + // When describeTrigger is 'none', do not set aria-describedby on the trigger (visual hint only). + const overlay = this.overlay as Overlay; + if (overlay.describeTrigger === 'none') { + return; + } const longpressDescription = document.createElement('div'); longpressDescription.id = `longpress-describedby-descriptor-${randomID()}`; diff --git a/1st-gen/packages/overlay/src/Overlay.ts b/1st-gen/packages/overlay/src/Overlay.ts index daedc960cd6..96fafabea0d 100644 --- a/1st-gen/packages/overlay/src/Overlay.ts +++ b/1st-gen/packages/overlay/src/Overlay.ts @@ -399,6 +399,19 @@ export class Overlay extends ComputedOverlayBase { @property({ attribute: false }) triggerInteraction?: TriggerInteraction; + /** + * When set to `'none'`, the overlay will not set `aria-describedby` on the + * trigger when open, so the trigger is not described by the overlay content. + * Use for hint overlays whose content duplicates the trigger (e.g. truncated + * value tooltips) to avoid double announcement by screen readers. + * + * @internal + * @type {"auto" | "none"} + * @default "auto" + */ + @property({ attribute: false }) + describeTrigger: 'auto' | 'none' = 'auto'; + /** * Configures the open/close heuristics of the Overlay. * diff --git a/1st-gen/packages/overlay/test/overlay-lifecycle.test.ts b/1st-gen/packages/overlay/test/overlay-lifecycle.test.ts index 24a2244fc54..a612618c20c 100644 --- a/1st-gen/packages/overlay/test/overlay-lifecycle.test.ts +++ b/1st-gen/packages/overlay/test/overlay-lifecycle.test.ts @@ -20,10 +20,11 @@ import { } from '@open-wc/testing'; import { a11ySnapshot, findAccessibilityNode } from '@web/test-runner-commands'; -import { OverlayTrigger } from '@spectrum-web-components/overlay'; +import { Overlay, OverlayTrigger } from '@spectrum-web-components/overlay'; import { Tooltip } from '@spectrum-web-components/tooltip'; import '@spectrum-web-components/action-button/sp-action-button.js'; +import '@spectrum-web-components/overlay/sp-overlay.js'; import '@spectrum-web-components/overlay/overlay-trigger.js'; import '@spectrum-web-components/tooltip/sp-tooltip.js'; @@ -169,4 +170,74 @@ describe('Overlay Trigger - accessible hover content management', () => { expect(trigger.getAttribute('aria-describedby')).to.equal(tooltip.id); }); + + describe('describeTrigger escape hatch', () => { + it('does not set aria-describedby on trigger when describeTrigger is "none" (hover)', async () => { + const el = await fixture(html` +
+ + Hover me + + Tooltip content + +
+ `); + + const trigger = el.querySelector('#hover-trigger') as HTMLElement; + const overlay = el.querySelector('#hover-overlay') as Overlay; + overlay.triggerElement = trigger; + + await elementUpdated(overlay); + await nextFrame(); + await nextFrame(); + + const sentinel = el.querySelector('#focus-sentinel') as HTMLInputElement; + sentinel.focus(); + + const opened = oneEvent(overlay, 'sp-opened'); + await sendTabKey(); + await opened; + + expect(trigger.getAttribute('aria-describedby')).to.be.null; + }); + + it('does not set aria-describedby on trigger when describeTrigger is "none" (longpress)', async () => { + const el = await fixture(html` +
+ + Longpress me + + + Longpress content + +
+ `); + + const trigger = el.querySelector('#longpress-trigger') as HTMLElement; + const overlay = el.querySelector('#longpress-overlay') as Overlay; + overlay.triggerElement = trigger; + + await elementUpdated(overlay); + await nextFrame(); + await nextFrame(); + + const opened = oneEvent(overlay, 'sp-opened'); + trigger.dispatchEvent( + new CustomEvent('longpress', { bubbles: true, composed: true }) + ); + await opened; + + expect(trigger.getAttribute('aria-describedby')).to.be.null; + }); + }); }); diff --git a/1st-gen/packages/overlay/test/overlay-v1.test.ts b/1st-gen/packages/overlay/test/overlay-v1.test.ts index 028a6241467..e4c6dc95de3 100644 --- a/1st-gen/packages/overlay/test/overlay-v1.test.ts +++ b/1st-gen/packages/overlay/test/overlay-v1.test.ts @@ -452,7 +452,8 @@ describe('Overlays, v1', () => { }); }); describe('Overlay - type="modal", v1', () => { - describe('handle multiple separate `contextmenu` events', async () => { + // @TODO: skipping this test suite because it's flaky in CI. Will review in the migration to Spectrum 2. + describe.skip('handle multiple separate `contextmenu` events', async () => { let width = 0; let height = 0; let firstMenu: Popover; diff --git a/1st-gen/packages/picker/src/Picker.ts b/1st-gen/packages/picker/src/Picker.ts index e3c35bc5f96..3ed38b1b00d 100644 --- a/1st-gen/packages/picker/src/Picker.ts +++ b/1st-gen/packages/picker/src/Picker.ts @@ -661,14 +661,17 @@ export class PickerBase extends SizedMixin(ExpandableElement, { protected handleTooltipSlotchange( event: Event & { target: HTMLSlotElement } ): void { - this.tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + const tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + this.tooltipEl = tooltipEl; // Set up trigger element for self-managed tooltips - if (this.tooltipEl?.selfManaged) { - // Wait for the tooltip to be fully initialized + if (tooltipEl?.selfManaged) { + if (this.button) { + tooltipEl.triggerElement = this.button; + } this.updateComplete.then(() => { - if (this.tooltipEl?.overlayElement && this.button) { - this.tooltipEl.overlayElement.triggerElement = this.button; + if (tooltipEl.selfManaged && this.button) { + tooltipEl.triggerElement = this.button; } }); } @@ -1255,12 +1258,8 @@ export class PickerBase extends SizedMixin(ExpandableElement, { } super.connectedCallback(); this.updateComplete.then(() => { - if (!this.tooltipEl?.selfManaged) { - return; - } - const overlayElement = this.tooltipEl.overlayElement; - if (overlayElement) { - overlayElement.triggerElement = this.button; + if (this.tooltipEl?.selfManaged && this.button) { + this.tooltipEl.triggerElement = this.button; } }); @@ -1686,14 +1685,17 @@ export class Picker extends SizedMixin(ExpandableElement, { protected handleTooltipSlotchange( event: Event & { target: HTMLSlotElement } ): void { - this.tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + const tooltipEl = event.target.assignedElements()[0] as Tooltip | undefined; + this.tooltipEl = tooltipEl; // Set up trigger element for self-managed tooltips - if (this.tooltipEl?.selfManaged) { - // Wait for the tooltip to be fully initialized + if (tooltipEl?.selfManaged) { + if (this.button) { + tooltipEl.triggerElement = this.button; + } this.updateComplete.then(() => { - if (this.tooltipEl?.overlayElement && this.button) { - this.tooltipEl.overlayElement.triggerElement = this.button; + if (tooltipEl.selfManaged && this.button) { + tooltipEl.triggerElement = this.button; } }); } @@ -2269,12 +2271,8 @@ export class Picker extends SizedMixin(ExpandableElement, { public override connectedCallback(): void { super.connectedCallback(); this.updateComplete.then(() => { - if (!this.tooltipEl?.selfManaged) { - return; - } - const overlayElement = this.tooltipEl.overlayElement; - if (overlayElement) { - overlayElement.triggerElement = this.button; + if (this.tooltipEl?.selfManaged && this.button) { + this.tooltipEl.triggerElement = this.button; } }); diff --git a/1st-gen/packages/picker/test/picker-responsive.test.ts b/1st-gen/packages/picker/test/picker-responsive.test.ts index 8fafdf4db32..a7cf7d1699d 100644 --- a/1st-gen/packages/picker/test/picker-responsive.test.ts +++ b/1st-gen/packages/picker/test/picker-responsive.test.ts @@ -23,6 +23,7 @@ import { spy } from 'sinon'; import type { MenuItem } from '@spectrum-web-components/menu'; import { Picker } from '@spectrum-web-components/picker'; import { Popover } from '@spectrum-web-components/popover'; +import { isFirefox } from '@spectrum-web-components/shared'; import { Tray } from '@spectrum-web-components/tray/src/Tray.js'; import '@spectrum-web-components/field-label/sp-field-label.js'; @@ -187,10 +188,14 @@ describe('Picker, responsive', () => { /** * This is a hack to set the `isTouchDevice` property to true - * so that we can test the touch device behavior. + * so that we can test the touch device behavior. We must also + * call requestUpdate() to trigger a re-render, since directly + * setting matches bypasses the MatchMediaController's onChange + * which normally calls requestUpdate. */ el.isTouchDevice.matches = true; - await elementUpdated(el); + el.requestUpdate(); + await el.updateComplete; // Open the picker to initialize the menu. const opened = oneEvent(el, 'sp-opened'); @@ -231,6 +236,10 @@ describe('Picker, responsive', () => { }); it('dispatches change event when menu item is clicked on touch device', async () => { + // TODO: This test is flaky in firefox and needs to be addressed in 2nd-gen. + if (isFirefox()) { + return; + } el = await pickerFixture(); await elementUpdated(el); @@ -239,24 +248,32 @@ describe('Picker, responsive', () => { /** * This is a hack to set the `isTouchDevice` property to true - * so that we can test the iPad/tablet behavior. + * so that we can test the iPad/tablet behavior. We must also + * call requestUpdate() to trigger a re-render, since directly + * setting matches bypasses the MatchMediaController's onChange + * which normally calls requestUpdate. */ el.isTouchDevice.matches = true; - await elementUpdated(el); + el.requestUpdate(); + await el.updateComplete; // Open the picker. const opened = oneEvent(el, 'sp-opened'); el.open = true; await opened; - await elementUpdated(el); - // Wait for menu to be ready. - if (!el.optionsMenu || el.optionsMenu.childItems.length === 0) { - await waitUntil( - () => el.optionsMenu && el.optionsMenu.childItems.length > 0, - 'Menu should be initialized' - ); - } + // Wait for cascading updates to settle (overlay/popover can trigger + // additional update cycles). + await el.updateComplete; + await new Promise((resolve) => requestAnimationFrame(resolve)); + await el.updateComplete; + + // Wait for menu to be ready with explicit timeout. + await waitUntil( + () => el.optionsMenu && el.optionsMenu.childItems.length > 0, + 'Menu should be initialized', + { timeout: 2000 } + ); // Wait for menu to be fully updated. await el.optionsMenu.updateComplete; @@ -268,9 +285,23 @@ describe('Picker, responsive', () => { // Get the second menu item (value="option-2") from childItems. const menuItem = el.optionsMenu.childItems[1] as MenuItem; expect(menuItem).to.not.be.null; + + // Wait for menu item to be fully registered with its role and + // selectionRoot. This is critical because the menu's click handler + // uses role="option" to find the target and selectionRoot to + // determine if selection should occur. + await waitUntil( + () => + menuItem.getAttribute('role') === 'option' && + menuItem.menuData?.selectionRoot === el.optionsMenu, + 'Menu item should be fully registered with role and selectionRoot', + { timeout: 2000 } + ); + await elementUpdated(menuItem); - // Ensure menu is not in scrolling state (which would prevent selection). + // Ensure menu is not in scrolling state immediately before click + // (which would prevent selection). el.optionsMenu.isScrolling = false; // Click the menu item and wait for the change event. @@ -287,10 +318,16 @@ describe('Picker, responsive', () => { el = await pickerFixture(); await elementUpdated(el); - // Simulate iPad: isMobile is false but isTouchDevice is true. + /** + * Simulate iPad: isMobile is false but isTouchDevice is true. + * We must also call requestUpdate() to trigger a re-render, + * since directly setting matches bypasses the MatchMediaController's + * onChange which normally calls requestUpdate. + */ el.isMobile.matches = false; el.isTouchDevice.matches = true; - await elementUpdated(el); + el.requestUpdate(); + await el.updateComplete; // Open the picker. const opened = oneEvent(el, 'sp-opened'); diff --git a/1st-gen/packages/progress-circle/package.json b/1st-gen/packages/progress-circle/package.json index 46459c44979..f4e6b25ef7a 100644 --- a/1st-gen/packages/progress-circle/package.json +++ b/1st-gen/packages/progress-circle/package.json @@ -55,7 +55,7 @@ "types": "./src/index.d.ts", "dependencies": { "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4", + "@spectrum-web-components/reactive-controllers": "1.11.2", "@spectrum-web-components/shared": "1.11.2" }, "keywords": [ diff --git a/1st-gen/packages/progress-circle/src/ProgressCircle.base.ts b/1st-gen/packages/progress-circle/src/ProgressCircle.base.ts new file mode 100644 index 00000000000..903c150f135 --- /dev/null +++ b/1st-gen/packages/progress-circle/src/ProgressCircle.base.ts @@ -0,0 +1,178 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base'; +import { + property, + query, +} from '@spectrum-web-components/base/src/decorators.js'; +import { SizedMixin } from '@spectrum-web-components/base/src/sizedMixin.js'; +import { + LanguageResolutionController, + languageResolverUpdatedSymbol, +} from '@spectrum-web-components/reactive-controllers/src/LanguageResolution.js'; +import { getLabelFromSlot } from '@spectrum-web-components/shared/src/get-label-from-slot.js'; + +import { + PROGRESS_CIRCLE_VALID_SIZES, + ProgressCircleStaticColor, +} from './ProgressCircle.types.js'; + +/** + * A progress circle component that visually represents the completion progress of a task. + * Can be used in both determinate (with specific progress value) and indeterminate (loading) states. + * + * @attribute {ElementSize} size - The size of the progress circle. + * + * @slot - Accessible label for the progress circle. + */ +export abstract class ProgressCircleBase extends SizedMixin(SpectrumElement, { + validSizes: PROGRESS_CIRCLE_VALID_SIZES, +}) { + // ───────────────────────── + // API TO OVERRIDE + // ───────────────────────── + + /** + * @internal + * + * A readonly array of the valid static colors for the progress circle. + */ + static readonly STATIC_COLORS: readonly string[]; + + /** + * @internal + * + * Static color variant for use on different backgrounds. + */ + @property({ type: String, reflect: true, attribute: 'static-color' }) + public staticColor?: ProgressCircleStaticColor; + + // ────────────────── + // SHARED API + // ────────────────── + + /** + * Whether the progress circle shows indeterminate progress (loading state). + */ + @property({ type: Boolean, reflect: true }) + public indeterminate = false; + + /** + * Accessible label for the progress circle. + */ + @property({ type: String }) + public label = ''; + + /** + * Progress value from 0 to 100. + */ + @property({ type: Number }) + public progress = 0; + + private languageResolver = new LanguageResolutionController(this); + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + /** + * @internal + */ + @query('slot') + private slotEl!: HTMLSlotElement; + + protected makeRotation(rotation: number): string | undefined { + return this.indeterminate + ? undefined + : `transform: rotate(${rotation}deg);`; + } + + protected handleSlotchange(): void { + const labelFromSlot = getLabelFromSlot(this.label, this.slotEl); + if (labelFromSlot) { + this.label = labelFromSlot; + } + } + + protected override firstUpdated(changes: PropertyValues): void { + super.firstUpdated(changes); + if (!this.hasAttribute('role')) { + this.setAttribute('role', 'progressbar'); + } + } + + private formatProgress(): string { + return new Intl.NumberFormat(this.languageResolver.language, { + style: 'percent', + unitDisplay: 'narrow', + }).format(this.progress / 100); + } + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + if (changes.has('indeterminate')) { + if (this.indeterminate) { + this.removeAttribute('aria-valuemin'); + this.removeAttribute('aria-valuemax'); + this.removeAttribute('aria-valuenow'); + this.removeAttribute('aria-valuetext'); + } else { + this.setAttribute('aria-valuemin', '0'); + this.setAttribute('aria-valuemax', '100'); + this.setAttribute('aria-valuenow', '' + this.progress); + this.setAttribute('aria-valuetext', this.formatProgress()); + } + } + if (!this.indeterminate && changes.has('progress')) { + this.setAttribute('aria-valuenow', '' + this.progress); + this.setAttribute('aria-valuetext', this.formatProgress()); + } + if (!this.indeterminate && changes.has(languageResolverUpdatedSymbol)) { + this.setAttribute('aria-valuetext', this.formatProgress()); + } + if (changes.has('label')) { + if (this.label.length) { + this.setAttribute('aria-label', this.label); + } else if (changes.get('label') === this.getAttribute('aria-label')) { + this.removeAttribute('aria-label'); + } + } + + const hasAccessibleName = (): boolean => { + return Boolean( + this.label || + this.getAttribute('aria-label') || + this.getAttribute('aria-labelledby') || + this.slotEl.assignedNodes().length + ); + }; + + if (window.__swc?.DEBUG) { + if (!hasAccessibleName() && this.getAttribute('role') === 'progressbar') { + window.__swc?.warn( + this, + ' elements need one of the following to be accessible:', + 'https://opensource.adobe.com/spectrum-web-components/components/progress-circle/#accessibility', + { + type: 'accessibility', + issues: [ + 'value supplied to the "label" attribute, which will be displayed visually as part of the element, or', + 'text content supplied directly to the element, or', + 'value supplied to the "aria-label" attribute, which will only be provided to screen readers, or', + 'an element ID reference supplied to the "aria-labelledby" attribute, which will be provided by screen readers and will need to be managed manually by the parent application.', + ], + } + ); + } + } + } +} diff --git a/1st-gen/packages/progress-circle/src/ProgressCircle.ts b/1st-gen/packages/progress-circle/src/ProgressCircle.ts index ae86fee77ab..f5bcff8d766 100644 --- a/1st-gen/packages/progress-circle/src/ProgressCircle.ts +++ b/1st-gen/packages/progress-circle/src/ProgressCircle.ts @@ -17,13 +17,13 @@ import { } from '@spectrum-web-components/base'; import { property } from '@spectrum-web-components/base/src/decorators.js'; import { ifDefined } from '@spectrum-web-components/base/src/directives.js'; + +import progressCircleStyles from './progress-circle.css.js'; +import { ProgressCircleBase } from './ProgressCircle.base.js'; import { PROGRESS_CIRCLE_STATIC_COLORS_S1, - ProgressCircleBase, type ProgressCircleStaticColorS1, -} from '@spectrum-web-components/core/components/progress-circle'; - -import progressCircleStyles from './progress-circle.css.js'; +} from './ProgressCircle.types.js'; /** * @element sp-progress-circle diff --git a/1st-gen/packages/progress-circle/src/ProgressCircle.types.ts b/1st-gen/packages/progress-circle/src/ProgressCircle.types.ts new file mode 100644 index 00000000000..fa730b187c8 --- /dev/null +++ b/1st-gen/packages/progress-circle/src/ProgressCircle.types.ts @@ -0,0 +1,32 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import type { ElementSize } from '@spectrum-web-components/base/src/sizedMixin.js'; + +export const PROGRESS_CIRCLE_VALID_SIZES = [ + 's', + 'm', + 'l', +] as const satisfies ElementSize[]; +export const PROGRESS_CIRCLE_STATIC_COLORS_S1 = ['white'] as const; +export const PROGRESS_CIRCLE_STATIC_COLORS_S2 = [ + ...PROGRESS_CIRCLE_STATIC_COLORS_S1, + 'black', +] as const; + +export type ProgressCircleStaticColorS1 = + (typeof PROGRESS_CIRCLE_STATIC_COLORS_S1)[number]; +export type ProgressCircleStaticColorS2 = + (typeof PROGRESS_CIRCLE_STATIC_COLORS_S2)[number]; +export type ProgressCircleStaticColor = + | ProgressCircleStaticColorS1 + | ProgressCircleStaticColorS2; diff --git a/1st-gen/packages/radio/src/spectrum-radio.css b/1st-gen/packages/radio/src/spectrum-radio.css index ec0de81fa36..e3d05b72a42 100644 --- a/1st-gen/packages/radio/src/spectrum-radio.css +++ b/1st-gen/packages/radio/src/spectrum-radio.css @@ -87,6 +87,7 @@ position: fixed; inset-block-end: 100%; inset-inline-end: 100%; + /* stylelint-disable-next-line property-no-deprecated */ clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); } diff --git a/1st-gen/packages/status-light/package.json b/1st-gen/packages/status-light/package.json index 9f7c8b570ca..f3a76146e22 100644 --- a/1st-gen/packages/status-light/package.json +++ b/1st-gen/packages/status-light/package.json @@ -54,8 +54,7 @@ ], "types": "./src/index.d.ts", "dependencies": { - "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4" + "@spectrum-web-components/base": "1.11.2" }, "keywords": [ "design-system", diff --git a/1st-gen/packages/status-light/src/StatusLight.base.ts b/1st-gen/packages/status-light/src/StatusLight.base.ts new file mode 100644 index 00000000000..c3dfaced0db --- /dev/null +++ b/1st-gen/packages/status-light/src/StatusLight.base.ts @@ -0,0 +1,95 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { PropertyValues, SpectrumElement } from '@spectrum-web-components/base'; +import { property } from '@spectrum-web-components/base/src/decorators.js'; +import { SizedMixin } from '@spectrum-web-components/base/src/sizedMixin.js'; + +import { + STATUSLIGHT_VALID_SIZES, + type StatusLightVariant, +} from './StatusLight.types.js'; + +/** + * A status light is a great way to convey semantic meaning and the condition of an entity, such as statuses and categories. + * + * @slot - The text label of the status light. + * @attribute {ElementSize} size - The size of the status light. + */ +export abstract class StatusLightBase extends SizedMixin(SpectrumElement, { + validSizes: STATUSLIGHT_VALID_SIZES, + noDefaultSize: true, +}) { + // ───────────────────────── + // API TO OVERRIDE + // ───────────────────────── + + /** + * @internal + * + * A readonly array of the valid color variants for the status light. + */ + static readonly VARIANTS_COLOR: readonly string[]; + + /** + * @internal + * + * A readonly array of the valid semantic variants for the status light. + */ + static readonly VARIANTS_SEMANTIC: readonly string[]; + + /** + * @internal + * + * A readonly array of all valid variants for the status light. + */ + static readonly VARIANTS: readonly string[]; + + /** + * @internal + * + * The variant of the status light. + */ + @property({ type: String, reflect: true }) + public variant: StatusLightVariant = 'info'; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + if (window.__swc?.DEBUG) { + const constructor = this.constructor as typeof StatusLightBase; + if (!constructor.VARIANTS.includes(this.variant)) { + window.__swc.warn( + this, + `<${this.localName}> element expects the "variant" attribute to be one of the following:`, + 'https://opensource.adobe.com/spectrum-web-components/components/status-light/#variants', + { + issues: [...constructor.VARIANTS], + } + ); + } + // Check disabled property if it exists (S1 only) + if (this.hasAttribute('disabled') && !('disabled' in this)) { + window.__swc.warn( + this, + `<${this.localName}> element does not support the disabled state.`, + 'https://opensource.adobe.com/spectrum-web-components/components/status-light/#states', + { + issues: ['disabled is not a supported property in Spectrum 2'], + } + ); + } + } + } +} diff --git a/1st-gen/packages/status-light/src/StatusLight.ts b/1st-gen/packages/status-light/src/StatusLight.ts index 9a8b995a2bc..a11d4942ada 100644 --- a/1st-gen/packages/status-light/src/StatusLight.ts +++ b/1st-gen/packages/status-light/src/StatusLight.ts @@ -17,15 +17,15 @@ import { TemplateResult, } from '@spectrum-web-components/base'; import { property } from '@spectrum-web-components/base/src/decorators.js'; + +import statusLightStyles from './status-light.css.js'; +import { StatusLightBase } from './StatusLight.base.js'; import { STATUSLIGHT_VARIANTS_COLOR_S1, STATUSLIGHT_VARIANTS_S1, STATUSLIGHT_VARIANTS_SEMANTIC_S1, - StatusLightBase, type StatusLightVariantS1, -} from '@spectrum-web-components/core/components/status-light'; - -import statusLightStyles from './status-light.css.js'; +} from './StatusLight.types.js'; /** * @deprecated The `STATUSLIGHT_VARIANTS` export is deprecated and will be removed diff --git a/1st-gen/packages/status-light/src/StatusLight.types.ts b/1st-gen/packages/status-light/src/StatusLight.types.ts new file mode 100644 index 00000000000..7ab4c4e0062 --- /dev/null +++ b/1st-gen/packages/status-light/src/StatusLight.types.ts @@ -0,0 +1,88 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import type { ElementSize } from '@spectrum-web-components/base/src/sizedMixin.js'; + +export const STATUSLIGHT_VALID_SIZES = [ + 's', + 'm', + 'l', + 'xl', +] as const satisfies readonly ElementSize[]; + +export const STATUSLIGHT_VARIANTS_SEMANTIC = [ + 'neutral', + 'info', + 'positive', + 'negative', + 'notice', +] as const; + +export const STATUSLIGHT_VARIANTS_SEMANTIC_S1 = [ + ...STATUSLIGHT_VARIANTS_SEMANTIC, + 'accent', +] as const; + +export const STATUSLIGHT_VARIANTS_SEMANTIC_S2 = [ + ...STATUSLIGHT_VARIANTS_SEMANTIC, +] as const; + +export const STATUSLIGHT_VARIANTS_COLOR_S1 = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', + 'chartreuse', + 'celery', + 'cyan', +] as const; + +export const STATUSLIGHT_VARIANTS_COLOR_S2 = [ + ...STATUSLIGHT_VARIANTS_COLOR_S1, + 'pink', + 'turquoise', + 'brown', + 'cinnamon', + 'silver', +] as const; + +export const STATUSLIGHT_VARIANTS_S1 = [ + ...STATUSLIGHT_VARIANTS_SEMANTIC_S1, + ...STATUSLIGHT_VARIANTS_COLOR_S1, +] as const; + +export const STATUSLIGHT_VARIANTS_S2 = [ + ...STATUSLIGHT_VARIANTS_SEMANTIC_S2, + ...STATUSLIGHT_VARIANTS_COLOR_S2, +] as const; + +export type StatusLightSemanticVariantS1 = + (typeof STATUSLIGHT_VARIANTS_SEMANTIC_S1)[number]; +export type StatusLightSemanticVariantS2 = + (typeof STATUSLIGHT_VARIANTS_SEMANTIC_S2)[number]; +export type StatusLightSemanticVariant = + | StatusLightSemanticVariantS1 + | StatusLightSemanticVariantS2; + +export type StatusLightColorVariantS1 = + (typeof STATUSLIGHT_VARIANTS_COLOR_S1)[number]; +export type StatusLightColorVariantS2 = + (typeof STATUSLIGHT_VARIANTS_COLOR_S2)[number]; +export type StatusLightColorVariant = + | StatusLightColorVariantS1 + | StatusLightColorVariantS2; + +export type StatusLightVariantS1 = (typeof STATUSLIGHT_VARIANTS_S1)[number]; +export type StatusLightVariantS2 = (typeof STATUSLIGHT_VARIANTS_S2)[number]; +export type StatusLightVariant = StatusLightVariantS1 | StatusLightVariantS2; diff --git a/1st-gen/packages/switch/src/spectrum-switch.css b/1st-gen/packages/switch/src/spectrum-switch.css index f322d4b055e..20420981baf 100644 --- a/1st-gen/packages/switch/src/spectrum-switch.css +++ b/1st-gen/packages/switch/src/spectrum-switch.css @@ -11,6 +11,7 @@ */ :host { + --spectrum-switch-border-width: var(--spectrum-border-width-200); --spectrum-switch-label-color-default: var(--spectrum-neutral-content-color-default); --spectrum-switch-label-color-hover: var(--spectrum-neutral-content-color-hover); --spectrum-switch-label-color-down: var(--spectrum-neutral-content-color-down); @@ -23,22 +24,24 @@ --spectrum-switch-background-color-selected-disabled: var(--spectrum-disabled-content-color); --spectrum-switch-focus-indicator-thickness: var(--mod-focus-indicator-thickness, var(--spectrum-focus-indicator-thickness)); --spectrum-switch-focus-indicator-color: var(--spectrum-focus-indicator-color); - --spectrum-switch-handle-border-color-disabled: var(--spectrum-disabled-content-color); + --spectrum-switch-border-color-disabled: var(--spectrum-disabled-content-color); } :host([disabled]) { --spectrum-switch-label-color-default: var(--spectrum-disabled-content-color); + --spectrum-switch-border-color-default: var(--spectrum-disabled-content-color); + --spectrum-switch-border-color-selected-default: var(--spectrum-disabled-content-color); } :host([emphasized]) { --spectrum-switch-background-color-selected-default: var(--spectrum-accent-color-900); --spectrum-switch-background-color-selected-hover: var(--spectrum-accent-color-1000); - --spectrum-switch-background-color-selected-down: var(--spectrum-accent-color-1100); + --spectrum-switch-background-color-selected-down: var(--spectrum-switch-background-color-emphasized-selected-down); --spectrum-switch-background-color-selected-focus: var(--spectrum-accent-color-1000); - --spectrum-switch-handle-border-color-selected-default: var(--spectrum-accent-color-900); - --spectrum-switch-handle-border-color-selected-hover: var(--spectrum-accent-color-1000); - --spectrum-switch-handle-border-color-selected-down: var(--spectrum-accent-color-1100); - --spectrum-switch-handle-border-color-selected-focus: var(--spectrum-accent-color-1000); + --spectrum-switch-border-color-selected-default: var(--spectrum-accent-color-900); + --spectrum-switch-border-color-selected-hover: var(--spectrum-accent-color-1000); + --spectrum-switch-border-color-selected-down: var(--spectrum-switch-background-color-emphasized-selected-down); + --spectrum-switch-border-color-selected-focus: var(--spectrum-accent-color-1000); } :host, @@ -106,11 +109,11 @@ } :host([checked]) #input + #switch::before { - transform: translateX(calc(var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%)); + transform: translateX(calc(var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100% - 2 * var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width)))); } :host([checked]) #input + #switch:dir(rtl)::before { - transform: translateX(calc((var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100%) * -1)); + transform: translateX(calc((var(--mod-switch-control-width, var(--spectrum-switch-control-width)) - 100% - 2 * var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width))) * -1)); } :host([disabled]) #input, @@ -119,7 +122,7 @@ } #input:focus-visible + #switch::after { - margin: calc(var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) * -1); + margin: calc((var(--mod-focus-indicator-gap, var(--spectrum-focus-indicator-gap)) + var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width))) * -1); } #label { @@ -144,6 +147,7 @@ margin-block: calc(var(--mod-switch-height, var(--spectrum-switch-min-height)) - var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-spacing-top-to-control, var(--spectrum-switch-spacing-top-to-control))); margin-inline: 0; vertical-align: middle; + border: var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width)) solid var(--highcontrast-switch-border-color-default, var(--mod-switch-border-color-default, var(--spectrum-switch-border-color-default))); border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); transition: background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, @@ -152,10 +156,10 @@ #switch::before { box-sizing: border-box; - inline-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); - block-size: var(--mod-switch-control-height, var(--spectrum-switch-control-height)); + inline-size: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width)) * 2); + block-size: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) - var(--mod-switch-border-width-themed, var(--spectrum-switch-border-width)) * 2); border-style: solid; - border-width: var(--mod-border-width-200, var(--spectrum-border-width-200)); + border-width: var(--mod-border-width-200, var(--spectrum-border-width-200)); /* this border is purposely set to the global token to ensure consistent styling for S1 & express */ border-radius: calc(var(--mod-switch-control-height, var(--spectrum-switch-control-height)) / 2); transition: background var(--mod-animation-duration-100, var(--spectrum-animation-duration-100)) ease-in-out, @@ -188,12 +192,17 @@ } #switch::before { - background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color, var(--spectrum-switch-handle-background-color))); - border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-default))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-default, var(--spectrum-switch-handle-background-color-default))); + border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color))); +} + +:host(:active) #input + #switch { + border-color: var(--highcontrast-switch-border-color-down, var(--mod-switch-border-color-down, var(--spectrum-switch-border-color-down))); } :host(:active) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color-down))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-down, var(--spectrum-switch-handle-background-color-down))); + border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color))); } :host(:active) #input ~ #label { @@ -202,10 +211,16 @@ :host(:active[checked]) #input:enabled + #switch { background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); + border-color: var(--highcontrast-switch-border-color-selected-down, var(--mod-switch-border-color-selected-down, var(--spectrum-switch-border-color-selected-down))); } :host(:active[checked]) #input:enabled + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected-down))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-down, var(--spectrum-switch-handle-background-color-selected))); + border-color: var(--highcontrast-switch-handle-border-color-selected-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected))); +} + +#input:focus-visible + #switch { + border-color: var(--highcontrast-switch-border-color-focus, var(--mod-switch-border-color-focus, var(--spectrum-switch-border-color-focus))); } #input:focus-visible + #switch::after { @@ -213,15 +228,18 @@ } #input:focus-visible + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-focus, var(--spectrum-switch-handle-background-color-focus))); + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color))); } :host([checked]) #input:focus-visible + #switch { background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); + border-color: var(--highcontrast-switch-border-color-selected-focus, var(--mod-switch-border-color-selected-focus, var(--spectrum-switch-border-color-selected-focus))); } :host([checked]) #input:focus-visible + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-focus, var(--spectrum-switch-handle-background-color-selected))); + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected))); } #input:focus-visible ~ #label { @@ -230,20 +248,30 @@ @media (hover: hover) { :host(:hover) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-hover, var(--mod-switch-handle-border-color-hover, var(--spectrum-switch-handle-border-color-hover))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-hover, var(--spectrum-switch-handle-background-color-hover))); + border-color: var(--highcontrast-switch-handle-border-color-hover, var(--mod-switch-handle-border-color-hover, var(--spectrum-switch-handle-border-color))); box-shadow: none; } + :host(:hover:active) #input + #switch::before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-down, var(--spectrum-switch-handle-background-color-down))); + } + + :host(:hover) #input + #switch { + border-color: var(--highcontrast-switch-border-color-hover, var(--mod-switch-border-color-hover, var(--spectrum-switch-border-color-hover))); + } + + :host(:hover:active) #input + #switch { + border-color: var(--highcontrast-switch-border-color-down, var(--mod-switch-border-color-down, var(--spectrum-switch-border-color-down))); + } + :host(:hover) #input ~ #label { color: var(--highcontrast-switch-label-color-hover, var(--mod-switch-label-color-hover, var(--spectrum-switch-label-color-hover))); } :host([checked]:hover) #input:enabled + #switch { background-color: var(--highcontrast-switch-background-color-selected-hover, var(--mod-switch-background-color-selected-hover, var(--spectrum-switch-background-color-selected-hover))); - } - - :host([checked]:hover) #input:enabled + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-hover, var(--mod-switch-handle-border-color-selected-hover, var(--spectrum-switch-handle-border-color-selected-hover))); + border-color: var(--highcontrast-switch-border-color-selected-hover, var(--mod-switch-border-color-selected-hover, var(--spectrum-switch-border-color-selected-hover))); } :host([disabled]:hover) #input + #switch, @@ -264,11 +292,7 @@ :host([disabled][checked]:hover) #input + #switch, :host([disabled][checked]:hover) #input + #switch { background-color: var(--highcontrast-switch-background-color-selected-disabled, var(--mod-switch-background-color-selected-disabled, var(--spectrum-switch-background-color-selected-disabled))); - } - - :host([disabled][checked]:hover) #input + #switch::before, - :host([disabled][checked]:hover) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + border-color: var(--spectrum-switch-border-color-disabled); } :host([disabled][checked]:hover) #input ~ #label, @@ -281,15 +305,21 @@ } :host(:hover) #input:focus-visible + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color-focus))); + border-color: var(--highcontrast-switch-handle-border-color-focus, var(--mod-switch-handle-border-color-focus, var(--spectrum-switch-handle-border-color))); } - :host([checked]:hover) #input:focus-visible + #switch { - background-color: var(--highcontrast-switch-background-color-selected-focus, var(--mod-switch-background-color-selected-focus, var(--spectrum-switch-background-color-selected-focus))); + :host([checked]:hover) #input:focus-visible + #switch::before { + border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected))); } - :host([checked]:hover) #input:focus-visible + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-focus, var(--mod-switch-handle-border-color-selected-focus, var(--spectrum-switch-handle-border-color-selected-focus))); + :host([checked]:hover) #input:enabled + #switch::before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-hover, var(--spectrum-switch-handle-background-color-selected))); + border-color: var(--highcontrast-switch-handle-border-color-selected-hover, var(--mod-switch-handle-border-color-selected-hover, var(--spectrum-switch-handle-border-color-selected))); + } + + :host([checked]:hover:active) #input + #switch { + background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); + border-color: var(--highcontrast-switch-border-color-selected-down, var(--mod-switch-border-color-selected-down, var(--spectrum-switch-border-color-selected-down))); } :host(:hover) #input:focus-visible ~ #label { @@ -299,20 +329,24 @@ :host([checked]) #input + #switch { background-color: var(--highcontrast-switch-background-color-selected-default, var(--mod-switch-background-color-selected-default, var(--spectrum-switch-background-color-selected-default))); + border-color: var(--highcontrast-switch-border-color-selected-default, var(--mod-switch-border-color-selected-default, var(--spectrum-switch-border-color-selected-default))); } :host([checked]) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected-default))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-default, var(--spectrum-switch-handle-background-color-selected))); + border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected))); } :host([disabled]) #input + #switch, :host([disabled]) #input + #switch { - background-color: var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled)); + background-color: var(--highcontrast-switch-background-color-disabled, var(--mod-switch-background-color-disabled, var(--spectrum-switch-background-color-disabled))); + border-color: var(--highcontrast-switch-border-color-disabled, var(--mod-switch-border-color-default, var(--spectrum-switch-border-color-default))); } :host([disabled]) #input + #switch::before, :host([disabled]) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-disabled, var(--spectrum-switch-handle-background-color-disabled))); + border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-disabled))); } :host([disabled][checked]) #input + #switch, @@ -322,7 +356,8 @@ :host([disabled][checked]) #input + #switch::before, :host([disabled][checked]) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-disabled, var(--mod-switch-handle-border-color-disabled, var(--spectrum-switch-handle-border-color-disabled))); + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-disabled, var(--spectrum-switch-handle-background-color-selected-disabled))); + border-color: var(--highcontrast-switch-handle-border-color-selected-disabled, var(--mod-switch-handle-border-color-selected-disabled, var(--spectrum-switch-handle-border-color-selected-disabled))); } :host([disabled]) #input ~ #label, @@ -342,70 +377,35 @@ --highcontrast-switch-handle-border-color-hover: Highlight; --highcontrast-switch-handle-border-color-down: Highlight; --highcontrast-switch-handle-border-color-focus: Highlight; - --highcontrast-switch-handle-border-color-disabled: Highlight; - --highcontrast-switch-handle-border-color-selected-default: Highlight; - --highcontrast-switch-handle-border-color-selected-hover: Highlight; - --highcontrast-switch-handle-border-color-selected-down: Highlight; - --highcontrast-switch-handle-border-color-selected-focus: Highlight; + --highcontrast-switch-handle-border-color-disabled: GrayText; + --highcontrast-switch-handle-border-color-selected-default: ButtonFace; + --highcontrast-switch-handle-border-color-selected-hover: ButtonFace; + --highcontrast-switch-handle-border-color-selected-down: ButtonFace; + --highcontrast-switch-handle-border-color-selected-focus: ButtonFace; + --highcontrast-switch-handle-border-color-selected-disabled: ButtonFace; --highcontrast-switch-background-color: ButtonFace; --highcontrast-switch-background-color-selected-default: Highlight; --highcontrast-switch-background-color-selected-hover: Highlight; --highcontrast-switch-background-color-selected-down: Highlight; --highcontrast-switch-background-color-selected-focus: Highlight; - --highcontrast-switch-background-color-selected-disabled: Highlight; + --highcontrast-switch-background-color-disabled: ButtonFace; + --highcontrast-switch-background-color-selected-disabled: GrayText; --highcontrast-switch-focus-indicator-color: ButtonText; + --highcontrast-switch-border-color-default: ButtonText; + --highcontrast-switch-border-color-hover: Highlight; + --highcontrast-switch-border-color-focus: Highlight; + --highcontrast-switch-border-color-down: Highlight; + --highcontrast-switch-border-color-selected-default: Highlight; + --highcontrast-switch-border-color-selected-hover: Highlight; + --highcontrast-switch-border-color-selected-down: Highlight; + --highcontrast-switch-border-color-selected-focus: Highlight; + --highcontrast-switch-border-color-disabled: GrayText; forced-color-adjust: none; } - #input:not(:checked) + #switch { - box-shadow: inset 0 0 0 1px ButtonText; - } - - @media (hover: hover) { - :host(:hover) #input:not(:checked) + #switch { - box-shadow: inset 0 0 0 1px Highlight; - } - - :host([disabled][checked]:hover) #input + #switch, - :host([disabled][checked]:hover) #input + #switch { - background-color: GrayText; - box-shadow: inset 0 0 0 1px GrayText; - } - - :host([disabled][checked]:hover) #input + #switch::before, - :host([disabled][checked]:hover) #input + #switch::before { - background-color: ButtonFace; - border-color: GrayText; - } - } - - :host([disabled]) #input:not(:checked) + #switch, - :host([disabled]) #input:not(:checked) + #switch { - background-color: ButtonFace; - box-shadow: inset 0 0 0 1px GrayText; - } - - :host([disabled]) #input:not(:checked) + #switch::before, - :host([disabled]) #input:not(:checked) + #switch::before { - background-color: ButtonFace; - border-color: GrayText; - } - - :host([disabled][checked]) #input + #switch, - :host([disabled][checked]) #input + #switch { - background-color: GrayText; - box-shadow: inset 0 0 0 1px GrayText; - } - - :host([disabled][checked]) #input + #switch::before, - :host([disabled][checked]) #input + #switch::before { - background-color: ButtonFace; - border-color: GrayText; - } - - :host([disabled]) #input ~ #label, - :host([disabled]) #input ~ #label { - color: GrayText; + :host([disabled]) #input + #switch, + :host([disabled]) #input + #switch { + --highcontrast-switch-border-color-default: GrayText; } } diff --git a/1st-gen/packages/switch/src/switch-overrides.css b/1st-gen/packages/switch/src/switch-overrides.css index adfd37a4a55..e205e2d6f63 100644 --- a/1st-gen/packages/switch/src/switch-overrides.css +++ b/1st-gen/packages/switch/src/switch-overrides.css @@ -11,15 +11,26 @@ */ :host { - --spectrum-switch-handle-border-color-default: var(--system-switch-handle-border-color-default); - --spectrum-switch-handle-border-color-hover: var(--system-switch-handle-border-color-hover); - --spectrum-switch-handle-border-color-down: var(--system-switch-handle-border-color-down); - --spectrum-switch-handle-border-color-focus: var(--system-switch-handle-border-color-focus); - --spectrum-switch-handle-border-color-selected-default: var(--system-switch-handle-border-color-selected-default); - --spectrum-switch-handle-border-color-selected-hover: var(--system-switch-handle-border-color-selected-hover); - --spectrum-switch-handle-border-color-selected-down: var(--system-switch-handle-border-color-selected-down); - --spectrum-switch-handle-border-color-selected-focus: var(--system-switch-handle-border-color-selected-focus); + --spectrum-switch-border-color-default: var(--system-switch-border-color-default); + --spectrum-switch-border-color-hover: var(--system-switch-border-color-hover); + --spectrum-switch-border-color-down: var(--system-switch-border-color-down); + --spectrum-switch-border-color-focus: var(--system-switch-border-color-focus); + --spectrum-switch-border-color-selected-default: var(--system-switch-border-color-selected-default); + --spectrum-switch-border-color-selected-hover: var(--system-switch-border-color-selected-hover); + --spectrum-switch-border-color-selected-down: var(--system-switch-border-color-selected-down); + --spectrum-switch-border-color-selected-focus: var(--system-switch-border-color-selected-focus); + --spectrum-switch-handle-border-color: var(--system-switch-handle-border-color); + --spectrum-switch-handle-border-color-selected: var(--system-switch-handle-border-color-selected); --spectrum-switch-background-color: var(--system-switch-background-color); + --spectrum-switch-background-color-emphasized-selected-down: var(--system-switch-background-color-emphasized-selected-down); --spectrum-switch-background-color-disabled: var(--system-switch-background-color-disabled); - --spectrum-switch-handle-background-color: var(--system-switch-handle-background-color); + --spectrum-switch-handle-background-color-default: var(--system-switch-handle-background-color-default); + --spectrum-switch-handle-background-color-hover: var(--system-switch-handle-background-color-hover); + --spectrum-switch-handle-background-color-down: var(--system-switch-handle-background-color-down); + --spectrum-switch-handle-background-color-focus: var(--system-switch-handle-background-color-focus); + --spectrum-switch-handle-background-color-selected: var(--system-switch-handle-background-color-selected); + --spectrum-switch-handle-border-color-disabled: var(--system-switch-handle-border-color-disabled); + --spectrum-switch-handle-background-color-selected-disabled: var(--system-switch-handle-background-color-selected-disabled); + --spectrum-switch-handle-background-color-disabled: var(--system-switch-handle-background-color-disabled); + --spectrum-switch-handle-border-color-selected-disabled: var(--system-switch-handle-border-color-selected-disabled); } diff --git a/1st-gen/packages/switch/src/switch.css b/1st-gen/packages/switch/src/switch.css index 6234a55cea4..aaba9226271 100644 --- a/1st-gen/packages/switch/src/switch.css +++ b/1st-gen/packages/switch/src/switch.css @@ -17,26 +17,49 @@ pointer-events: none; } -/* the handle's border in the down/active state remains the same if a user moves their cursor -while still activating/pressing the switch. Read-only switches should not have this behavior. */ -:host(:hover:active) #input + #switch::before, -:host([emphasized]:hover:active) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-down, var(--mod-switch-handle-border-color-down, var(--spectrum-switch-handle-border-color-down))); +/* Ensure read-only switches don't show interaction styles in any elements */ +:host([readonly]) #input + #switch, +:host([readonly]:hover) #input + #switch, +:host([readonly]:active) #input + #switch, +:host([readonly]:hover:active) #input + #switch { + background-color: var(--highcontrast-switch-background-color, var(--mod-switch-background-color, var(--spectrum-switch-background-color))); + border-color: var(--highcontrast-switch-border-color-default, var(--mod-switch-border-color-default, var(--spectrum-switch-border-color-default))); } -:host(:active[checked]) #input:enabled + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selelcted-down, var(--mod-switch-handle-border-color-selected-down, var(--spectrum-switch-handle-border-color-selected-down))); +:host([readonly][checked]) #input + #switch, +:host([readonly][checked]:hover) #input + #switch, +:host([readonly][checked]:active) #input + #switch, +:host([readonly][checked]:hover:active) #input + #switch { + background-color: var(--highcontrast-switch-background-color-selected-default, var(--mod-switch-background-color-selected-default, var(--spectrum-switch-background-color-selected-default))); + border-color: var(--highcontrast-switch-border-color-selected-default, var(--mod-switch-border-color-selected-default, var(--spectrum-switch-border-color-selected-default))); } -:host(:active[checked]) #input:enabled + #switch { - background-color: var(--highcontrast-switch-background-color-selected-down, var(--mod-switch-background-color-selected-down, var(--spectrum-switch-background-color-selected-down))); +:host([readonly]) #input + #switch::before, +:host([readonly]:hover) #input + #switch::before, +:host([readonly]:active) #input + #switch::before, +:host([readonly]:hover:active) #input + #switch::before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-hover, var(--spectrum-switch-handle-background-color-default))); + border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color))); } -/* Ensure read-only switches don't show interaction styles */ -:host([readonly]) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-default, var(--mod-switch-handle-border-color-default, var(--spectrum-switch-handle-border-color-default))) !important; +:host([readonly][checked]) #input + #switch::before, +:host([readonly][checked]:hover) #input + #switch::before, +:host([readonly][checked]:active) #input + #switch::before, +:host([readonly][checked]:hover:active) #input + #switch::before { + background-color: var(--highcontrast-switch-handle-background-color, var(--mod-switch-handle-background-color-selected-hover, var(--spectrum-switch-handle-background-color-selected))); + border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected))); } -:host([readonly][checked]) #input + #switch::before { - border-color: var(--highcontrast-switch-handle-border-color-selected-default, var(--mod-switch-handle-border-color-selected-default, var(--spectrum-switch-handle-border-color-selected-default))) !important; +:host([readonly]) #input ~ #label, +:host([readonly]:hover) #input ~ #label, +:host([readonly]:active) #input ~ #label, +:host([readonly]:hover:active) #input ~ #label { + color: var(--highcontrast-switch-label-color-default, var(--mod-switch-label-color-default, var(--spectrum-switch-label-color-default))); +} + +:host([readonly][checked]) #input ~ #label, +:host([readonly][checked]:hover) #input ~ #label, +:host([readonly][checked]:active) #input ~ #label, +:host([readonly][checked]:hover:active) #input ~ #label { + color: var(--highcontrast-switch-label-color-default, var(--mod-switch-label-color-default, var(--spectrum-switch-label-color-default))); } diff --git a/1st-gen/packages/textfield/README.md b/1st-gen/packages/textfield/README.md index d55c0ef7bb0..e3f1b4a32ae 100644 --- a/1st-gen/packages/textfield/README.md +++ b/1st-gen/packages/textfield/README.md @@ -215,6 +215,24 @@ Use the `required` attribute to indicate a textfield value is required. Dictate >
``` +### Behaviors + +#### Truncated value tooltip + +When a single-line textfield value is visually truncated, a tooltip appears on hover/focus to expose the full value. This helps users review long input content when the control is too narrow to display all characters. This supports accessibility when users adjust text spacing (WCAG 1.4.12). + +This behavior applies to single-line inputs and does not apply to multiline textfields. The full value is available on hover and keyboard focus so screen reader users can access it via the control's value. See also the same behavior on [number-field](../number-field). + +By default the tooltip uses placement `bottom`. To change where the tooltip appears relative to the field, set the `tooltip-placement` attribute to a valid placement value: `top`, `top-start`, `top-end`, `right`, `right-start`, `right-end`, `bottom`, `bottom-start`, `bottom-end`, `left`, `left-start`, `left-end`. Placement is preferred but may flip (e.g. to the opposite side) when there is insufficient space so the tooltip stays in view. + +```html +Email + +``` + ### Accessibility #### Include a label diff --git a/1st-gen/packages/textfield/package.json b/1st-gen/packages/textfield/package.json index 86e1816fece..69fc48337fb 100644 --- a/1st-gen/packages/textfield/package.json +++ b/1st-gen/packages/textfield/package.json @@ -59,7 +59,9 @@ "@spectrum-web-components/icon": "1.11.2", "@spectrum-web-components/icons-ui": "1.11.2", "@spectrum-web-components/icons-workflow": "1.11.2", - "@spectrum-web-components/shared": "1.11.2" + "@spectrum-web-components/overlay": "1.11.2", + "@spectrum-web-components/shared": "1.11.2", + "@spectrum-web-components/tooltip": "1.11.2" }, "keywords": [ "design-system", diff --git a/1st-gen/packages/textfield/src/Textfield.ts b/1st-gen/packages/textfield/src/Textfield.ts index 07a15be35d0..5c08456bc79 100644 --- a/1st-gen/packages/textfield/src/Textfield.ts +++ b/1st-gen/packages/textfield/src/Textfield.ts @@ -29,12 +29,23 @@ import { } from '@spectrum-web-components/base/src/directives.js'; import { ManageHelpText } from '@spectrum-web-components/help-text/src/manage-help-text.js'; import checkmarkStyles from '@spectrum-web-components/icon/src/spectrum-icon-checkmark.css.js'; +import type { Placement } from '@spectrum-web-components/overlay'; import { Focusable } from '@spectrum-web-components/shared/src/focusable.js'; import '@spectrum-web-components/icons-ui/icons/sp-icon-checkmark100.js'; import '@spectrum-web-components/icons-workflow/icons/sp-icon-alert.js'; import textfieldStyles from './textfield.css.js'; +import { + TruncatedValueTooltipController, + type TruncatedValueTooltipHost, +} from './TruncatedValueTooltipController.js'; + +export type { TruncatedValueTooltipHost } from './TruncatedValueTooltipController.js'; +export { + TruncatedValueTooltipController, + truncatedValueTooltipUpdatedSymbol, +} from './TruncatedValueTooltipController.js'; const textfieldTypes = ['text', 'url', 'tel', 'email', 'password'] as const; export type TextfieldType = (typeof textfieldTypes)[number]; @@ -48,6 +59,10 @@ export class TextfieldBase extends ManageHelpText( noDefaultSize: true, }) ) { + protected truncatedValueTooltipController = + new TruncatedValueTooltipController( + this as unknown as TruncatedValueTooltipHost & typeof this + ); public static override get styles(): CSSResultArray { return [textfieldStyles, checkmarkStyles]; } @@ -149,6 +164,13 @@ export class TextfieldBase extends ManageHelpText( @property({ type: Boolean, reflect: true }) public readonly = false; + /** + * Placement of the tooltip shown when the value is truncated (e.g. 'bottom', 'top'). + * Defaults to 'bottom' per Spectrum design. + */ + @property({ attribute: 'tooltip-placement' }) + public truncatedValueTooltipPlacement: Placement = 'bottom'; + /** * The specific number of rows the form control should provide in the user interface */ @@ -374,20 +396,35 @@ export class TextfieldBase extends ManageHelpText( protected override render(): TemplateResult { return html`
${this.renderField()}
+ ${this.truncatedValueTooltipController.render()} ${this.renderHelpText(this.invalid)} `; } protected override update(changedProperties: PropertyValues): void { - if ( + const valueOrRequiredChanged = changedProperties.has('value') || - (changedProperties.has('required') && this.required) - ) { + (changedProperties.has('required') && this.required); + + if (valueOrRequiredChanged) { this.updateComplete.then(() => { this.checkValidity(); + if (changedProperties.has('value')) { + // Truncation tooltip uses an intentional multi-phase update: (1) first render puts value in + // DOM, (2) after updateComplete we measure and set truncation state, (3) controller defers + // requestUpdate to a microtask so a second render shows the tooltip. We cannot show the + // tooltip in the first render because we must measure after layout. This can cause a brief + // delay before the tooltip appears; that is expected. + this.truncatedValueTooltipController.refresh(); + } }); } + super.update(changedProperties); + + if (changedProperties.has('focused') && !this.focused) { + this.truncatedValueTooltipController.refresh(); + } } public checkValidity(): boolean { diff --git a/1st-gen/packages/textfield/src/TruncatedValueTooltipController.ts b/1st-gen/packages/textfield/src/TruncatedValueTooltipController.ts new file mode 100644 index 00000000000..a4dd7a8973c --- /dev/null +++ b/1st-gen/packages/textfield/src/TruncatedValueTooltipController.ts @@ -0,0 +1,242 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations in the License. + */ + +import { + html, + nothing, + type ReactiveController, + type ReactiveElement, + type TemplateResult, +} from '@spectrum-web-components/base'; +import type { Placement } from '@spectrum-web-components/overlay'; + +/** + * Symbol used to request a host re-render when truncation state or tooltip deps change. + * The host can use this in its update lifecycle to react if needed; the important part + * is that requestUpdate(symbol, previous) triggers a re-render so controller.render() runs again. + */ +export const truncatedValueTooltipUpdatedSymbol = Symbol( + 'truncated value tooltip updated' +); + +/** + * Host interface for TruncatedValueTooltipController. The host must provide these + * properties (e.g. TextfieldBase). The controller reads them to determine truncation + * and to render the tooltip content and placement. + */ +export interface TruncatedValueTooltipHost { + inputElement: HTMLInputElement | HTMLTextAreaElement; + multiline: boolean; + type: string; + disabled: boolean; + focused?: boolean; + displayValue: string; + truncatedValueTooltipPlacement: Placement; +} + +type HostElement = ReactiveElement & TruncatedValueTooltipHost; + +/** + * A reactive controller that adds truncated-value tooltip behavior: when the visible + * value is clipped, a tooltip with the full value is shown on hover/focus. Overlay + * and tooltip are lazy-loaded only when truncation is first detected. + * + * The host must implement TruncatedValueTooltipHost (e.g. TextfieldBase). The host + * includes the controller's render output in its template and may call refresh() when + * value or focused changes; NumberField also calls syncTooltipText() from handleInput() + * so the tooltip stays in sync with the live input without re-renders. + */ +export class TruncatedValueTooltipController implements ReactiveController { + private host: HostElement; + + private _isTruncated = false; + + private _tooltipDepsLoaded = false; + + private _resizeObserver: ResizeObserver | null = null; + + private _observerInitialized = false; + + constructor(host: HostElement) { + this.host = host; + this.host.addController(this); + } + + private get inputElementIsTruncated(): boolean { + const host = this.host; + if (!host.inputElement || host.multiline || host.type === 'password') { + return false; + } + // Add 1 because Safari sometimes rounds by 1px, breaking the calculation otherwise. + return host.inputElement.scrollWidth > host.inputElement.clientWidth + 1; + } + + /** + * Updates truncation state. Returns true if we just transitioned to truncated + * (so the host can e.g. schedule syncTooltipText after updateComplete). + */ + private refreshTruncationState(): boolean { + const host = this.host; + const currentlyTruncated = this.inputElementIsTruncated; + if (host.focused && this._isTruncated && !currentlyTruncated) { + // Keep tooltip mounted through the active focus session once truncation has occurred. + return false; + } + if (currentlyTruncated === this._isTruncated) { + return false; + } + const previous = this._isTruncated; + this._isTruncated = currentlyTruncated; + // Defer so we don't schedule an update during the host's update (Lit warning). This creates an + // intentional multi-phase update: first render (value in DOM) → measure here → microtask → + // requestUpdate → second render (tooltip in DOM). We need the second render to show the + // tooltip; the brief delay before it appears is expected. + Promise.resolve().then(() => { + this.host.requestUpdate(truncatedValueTooltipUpdatedSymbol, previous); + }); + return currentlyTruncated; + } + + /** + * Public API for hosts (e.g. NumberField) to force a re-check of truncation state. + * Call from handleInput() or when value/focused changes so the tooltip visibility stays in sync. + * Returns true if we just became truncated (host may schedule syncTooltipText after updateComplete). + */ + public refresh(): boolean { + return this.refreshTruncationState(); + } + + private async ensureTooltipDeps(): Promise { + if (this._tooltipDepsLoaded) { + return; + } + await Promise.all([ + import('@spectrum-web-components/overlay/sp-overlay.js'), + import('@spectrum-web-components/tooltip/sp-tooltip.js'), + ]); + this._tooltipDepsLoaded = true; + // Defer so we don't schedule an update during the host's render (Lit warning). + Promise.resolve().then(() => { + this.host.requestUpdate(truncatedValueTooltipUpdatedSymbol, false); + }); + } + + /** + * Returns the tooltip overlay template when truncated; otherwise nothing. + * The host includes this in its render() (e.g. this.truncatedValueTooltipController.render()). + */ + public render(): TemplateResult | typeof nothing { + const host = this.host; + if ( + !this._isTruncated || + host.disabled || + !host.inputElement || + host.type === 'password' + ) { + return nothing; + } + if (!this._tooltipDepsLoaded) { + this.ensureTooltipDeps(); + return nothing; + } + return html` + + `; + } + + /** + * Updates the tooltip label text without requestUpdate. Used by NumberField from + * handleInput() so the tooltip shows the current input value while typing without + * triggering re-renders that would affect formatting or selection. + * + * We mutate an existing text node under `` instead of assigning + * `tooltip.textContent`. Clearing `textContent` on the host removes all light-DOM + * children, which ejects Lit's marker nodes for `${host.displayValue}` in + * `render()` and causes "ChildPart has no parentNode" on the next update. + * + * Trade-off: this couples to our own light-DOM shape: `render()` must keep a + * direct text child of `` (or update this lookup if we wrap the label + * in an element, e.g. a dedicated ``). This does not depend on + * `sp-tooltip`'s internal shadow DOM. + */ + public syncTooltipText(text: string): void { + const tooltip = this.host.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + if (!tooltip) { + return; + } + // Find the Lit-bound text node; do not replace all children (see JSDoc above). + const tooltipTextNode = + Array.from(tooltip.childNodes).find( + (node) => + node.nodeType === Node.TEXT_NODE && + Boolean((node.textContent ?? '').trim().length) + ) ?? + Array.from(tooltip.childNodes).find( + (node) => node.nodeType === Node.TEXT_NODE + ); + if (tooltipTextNode) { + tooltipTextNode.textContent = text; + } + } + + hostConnected(): void { + // Defer ResizeObserver setup to hostUpdated so inputElement is in the DOM. + // On reconnection, request an update so hostUpdated runs and we re-attach the observer. + if (!this._observerInitialized) { + this.host.requestUpdate(); + } + } + + hostUpdated(): void { + const host = this.host; + if (host.multiline || this._observerInitialized) { + return; + } + // Defer full setup until inputElement is in the DOM so we can observe it for truncation. + if (!host.inputElement) { + return; + } + this._observerInitialized = true; + this._resizeObserver = new ResizeObserver(() => { + this.refreshTruncationState(); + }); + this._resizeObserver.observe(this.host as unknown as Element); + this._resizeObserver.observe(host.inputElement); + this.refreshTruncationState(); + } + + hostDisconnected(): void { + if (this._resizeObserver) { + this._resizeObserver.disconnect(); + this._resizeObserver = null; + } + this._observerInitialized = false; + this._isTruncated = false; + } +} diff --git a/1st-gen/packages/textfield/src/spectrum-textfield.css b/1st-gen/packages/textfield/src/spectrum-textfield.css index 8e29d930bef..ba29d648783 100644 --- a/1st-gen/packages/textfield/src/spectrum-textfield.css +++ b/1st-gen/packages/textfield/src/spectrum-textfield.css @@ -275,6 +275,10 @@ appearance: textfield; } +:host([type="password"]) .input { + text-overflow: clip; +} + :host([type="number"]) .input::-webkit-inner-spin-button, :host([type="number"]) .input::-webkit-outer-spin-button { margin: 0; diff --git a/1st-gen/packages/textfield/stories/textfield.stories.ts b/1st-gen/packages/textfield/stories/textfield.stories.ts index c1e41caad81..b3d2bc480da 100644 --- a/1st-gen/packages/textfield/stories/textfield.stories.ts +++ b/1st-gen/packages/textfield/stories/textfield.stories.ts @@ -186,3 +186,48 @@ export const sized = (): TemplateResult => html`
`; + +export const TruncatedValueTooltip = (): TemplateResult => html` + Truncated value + + + Not truncated value (no tooltip) + + + + Invalid truncated value + + + + Valid truncated value + + + + Truncated value with right tooltip placement + + + + Password field (truncated value, no tooltip for security) + + +`; diff --git a/1st-gen/packages/textfield/test/textfield.test.ts b/1st-gen/packages/textfield/test/textfield.test.ts index 86c114b1a85..d760b9289df 100644 --- a/1st-gen/packages/textfield/test/textfield.test.ts +++ b/1st-gen/packages/textfield/test/textfield.test.ts @@ -9,7 +9,13 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -import { elementUpdated, expect, html, litFixture } from '@open-wc/testing'; +import { + elementUpdated, + expect, + html, + litFixture, + waitUntil, +} from '@open-wc/testing'; import { sendKeys } from '@web/test-runner-commands'; import { HelpText } from '@spectrum-web-components/help-text'; @@ -637,6 +643,189 @@ describe('Textfield', () => { expect(input).to.not.be.null; expect(el.focusElement).to.have.attribute('title'); }); + it('renders truncated value tooltip when neither valid nor invalid and value is clipped', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(value); + }); + it('renders truncated value tooltip when valid and value is clipped', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(value); + }); + it('renders truncated value tooltip when invalid and value is clipped', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.exist; + const tooltip = el.shadowRoot?.querySelector( + '#truncated-value-tooltip sp-tooltip' + ); + expect(tooltip?.textContent?.trim()).to.equal(value); + }); + it('does not render truncated value tooltip when value fits', async () => { + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('does not render truncated value tooltip when disabled and value is clipped', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('does not render truncated value tooltip when multiline and value is long', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('does not render truncated value tooltip when type is password and value is clipped', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ); + expect(tooltipOverlay).to.not.exist; + }); + it('uses default placement "bottom" for truncated value tooltip when not set', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ) as { placement?: string }; + expect(tooltipOverlay).to.exist; + expect(tooltipOverlay.placement).to.equal('bottom'); + }); + it('uses tooltip-placement when set', async () => { + const value = 'ThisIsAVeryLongTextfieldValueThatWillBeTruncated'; + const el = await litFixture(html` + + `); + await elementUpdated(el); + await elementUpdated(el); + + await waitUntil( + () => el.shadowRoot?.querySelector('#truncated-value-tooltip') != null, + 'Tooltip overlay (lazy-loaded) should appear when value is truncated' + ); + const tooltipOverlay = el.shadowRoot?.querySelector( + '#truncated-value-tooltip' + ) as { placement?: string }; + expect(tooltipOverlay).to.exist; + expect(tooltipOverlay.placement).to.equal('right'); + }); it('invalid - multiline - boundary-type assertions', async () => { const el = await litFixture(html` html` `; +export const SelfManagedSlottedHosts = (): TemplateResult => html` +
+
+ + Action menu + + + More actions + + Action menu tooltip + + Deselect + Select inverse + Feather... + +
+ +
+ + Picker + + + + Picker tooltip + + First option + Second option + Third option + +
+ +
+ + Combobox + + + + Combobox tooltip + + Alpha + Beta + Gamma + +
+
+`; +SelfManagedSlottedHosts.swc_vrt = { + skip: true, +}; + export const draggable = (): TemplateResult => { const handleDragStart = (event: DragEvent): void => { event.dataTransfer?.setDragImage( diff --git a/1st-gen/projects/documentation/.eleventy.js b/1st-gen/projects/documentation/.eleventy.js index a4c799cbd7f..1bd795a5478 100644 --- a/1st-gen/projects/documentation/.eleventy.js +++ b/1st-gen/projects/documentation/.eleventy.js @@ -39,6 +39,10 @@ export default function (eleventyConfig) { eleventyConfig.addShortcode('packageVersion', packageVersion); eleventyConfig.addNunjucksGlobal('WATCH_MODE', process.env.WATCH_MODE); eleventyConfig.setUseGitIgnore(false); + eleventyConfig.addPassthroughCopy('./content/llms*.txt'); + eleventyConfig.addPassthroughCopy('./content/reference/**'); + eleventyConfig.addPassthroughCopy('./content/robots.txt'); + eleventyConfig.addPassthroughCopy('./content/sitemap.xml'); eleventyConfig.addPassthroughCopy('./content/favicon.ico'); eleventyConfig.addPassthroughCopy('./content/typekit/*.woff2'); eleventyConfig.addPassthroughCopy('./content/favicon.svg'); diff --git a/1st-gen/projects/documentation/.gitignore b/1st-gen/projects/documentation/.gitignore index 5a3c13c9f1b..eabb4d2c36c 100644 --- a/1st-gen/projects/documentation/.gitignore +++ b/1st-gen/projects/documentation/.gitignore @@ -8,6 +8,12 @@ content/components content/tools custom-elements.json +# generated llm reference files (regenerated by docs:ci via generate:llms) +content/llms.txt +content/llms-full.txt +content/sitemap.xml +content/reference + # scripting !/scripts/*.js diff --git a/1st-gen/projects/documentation/content/guides/adding-component.md b/1st-gen/projects/documentation/content/guides/adding-component.md index d599dc74f03..d137d950916 100644 --- a/1st-gen/projects/documentation/content/guides/adding-component.md +++ b/1st-gen/projects/documentation/content/guides/adding-component.md @@ -111,9 +111,9 @@ Each component's `packages/_componentname_/README.md`. These files must meet our - The "Accessibility" section contains notes on any accessibility considerations that affect the component's development. See the notes on cross-root ARIA in Accessibility section of [`packages/help-text/README.md`](https://github.com/adobe/spectrum-web-components/blob/main/packages/help-text/README.md). - Check out the [Spectrum Design System documentation](https://spectrum.adobe.com/) to ensure our documentation is uses consistent langauge and component recommendations. -##### Cursor rules +##### AI Rules -If you're using [Cursor](https://cursor.sh/), the repository includes rules that help enforce these documentation standards automatically. When editing component README files, Cursor's AI assistant will follow the guidelines in `.cursor/rules/component-readme.mdc` to ensure consistent structure, accessible code examples, and proper heading hierarchy. +If you're using a coding agent, like [Cursor](https://cursor.com/) or [Claude Code](https://code.claude.com/docs/en/overview), the repository includes rules that help enforce these documentation standards automatically. When editing component README files, your AI assistant will follow the guidelines in `.ai/rules/component-readme.md` to ensure consistent structure, accessible code examples, and proper heading hierarchy. #### Documentation structure diff --git a/1st-gen/projects/documentation/content/robots.txt b/1st-gen/projects/documentation/content/robots.txt new file mode 100644 index 00000000000..988a5ea00ca --- /dev/null +++ b/1st-gen/projects/documentation/content/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://opensource.adobe.com/spectrum-web-components/sitemap.xml diff --git a/1st-gen/projects/documentation/rollup.config.js b/1st-gen/projects/documentation/rollup.config.js index a70e4a9a0f0..e5bc8fe7416 100644 --- a/1st-gen/projects/documentation/rollup.config.js +++ b/1st-gen/projects/documentation/rollup.config.js @@ -198,6 +198,13 @@ export default async () => { }) ); + mpaConfig.plugins.push( + copy({ + patterns: ['llms*.txt', 'sitemap.xml', 'robots.txt', 'reference/**'], + rootDir: './_site', + }) + ); + mpaConfig.plugins.push( copy({ patterns: ['images/**/*', 'manifest.webmanifest'], diff --git a/1st-gen/tools/base/package.json b/1st-gen/tools/base/package.json index d3d6c55b17b..c113638181c 100644 --- a/1st-gen/tools/base/package.json +++ b/1st-gen/tools/base/package.json @@ -108,7 +108,6 @@ ], "types": "./src/index.d.ts", "dependencies": { - "@spectrum-web-components/core": "0.0.4", "lit": "^2.5.0 || ^3.1.3" }, "keywords": [ diff --git a/1st-gen/tools/base/src/Base.ts b/1st-gen/tools/base/src/Base.ts index a856fdafaa2..96c9da22fb8 100644 --- a/1st-gen/tools/base/src/Base.ts +++ b/1st-gen/tools/base/src/Base.ts @@ -10,27 +10,166 @@ * governing permissions and limitations under the License. */ -import { SpectrumElement as CoreSpectrumElement } from '@spectrum-web-components/core/element/spectrum-element.js'; +import { LitElement, ReactiveElement } from 'lit'; import { coreVersion, version } from './version.js'; -export { - type SpectrumInterface, - SpectrumMixin, -} from '@spectrum-web-components/core/element/spectrum-element.js'; +type Constructor> = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (...args: any[]): T; + prototype: T; +}; + +export interface SpectrumInterface { + shadowRoot: ShadowRoot; + hasVisibleFocusInTree(): boolean; +} + +export function SpectrumMixin>( + constructor: T +): T & Constructor { + class SpectrumMixinElement extends constructor { + /** + * @internal + */ + public override shadowRoot!: ShadowRoot; + public hasVisibleFocusInTree(): boolean { + const getAncestors = (root: Document = document): HTMLElement[] => { + let currentNode = root.activeElement as HTMLElement; + while ( + currentNode?.shadowRoot && + currentNode.shadowRoot.activeElement + ) { + currentNode = currentNode.shadowRoot.activeElement as HTMLElement; + } + const ancestors: HTMLElement[] = currentNode ? [currentNode] : []; + while (currentNode) { + const ancestor = + currentNode.assignedSlot || + currentNode.parentElement || + (currentNode.getRootNode() as ShadowRoot)?.host; + if (ancestor) { + ancestors.push(ancestor as HTMLElement); + } + currentNode = ancestor as HTMLElement; + } + return ancestors; + }; + const activeElement = getAncestors(this.getRootNode() as Document)[0]; + if (!activeElement) { + return false; + } + // Browsers without support for the `:focus-visible` + // selector will throw on the following test (Safari, older things). + // Some won't throw, but will be focusing item rather than the menu and + // will rely on the polyfill to know whether focus is "visible" or not. + return ( + activeElement.matches(':focus-visible') || + activeElement.matches('.focus-visible') + ); + } + } + return SpectrumMixinElement; +} /** * Base class for 1st-gen Spectrum Web Components. - * Extends the core SpectrumElement with 1st-gen specific version information. */ -export class SpectrumElement extends CoreSpectrumElement { +export class SpectrumElement extends SpectrumMixin(LitElement) { /** * The version of the 1st-gen Spectrum Web Components library. */ - static override VERSION = version; + static VERSION = version; /** * The version of the core base package. */ - static override CORE_VERSION = coreVersion; + static CORE_VERSION = coreVersion; + + public override get dir(): CSSStyleDeclaration['direction'] { + return getComputedStyle(this).direction ?? 'ltr'; + } +} + +if (process.env.NODE_ENV === 'development') { + const ignoreWarningTypes = { + default: false, + accessibility: false, + api: false, + }; + const ignoreWarningLevels = { + default: false, + low: false, + medium: false, + high: false, + deprecation: false, + }; + window.__swc = { + ...window.__swc, + DEBUG: true, + ignoreWarningLocalNames: { + ...(window.__swc?.ignoreWarningLocalNames || {}), + }, + ignoreWarningTypes: { + ...ignoreWarningTypes, + ...(window.__swc?.ignoreWarningTypes || {}), + }, + ignoreWarningLevels: { + ...ignoreWarningLevels, + ...(window.__swc?.ignoreWarningLevels || {}), + }, + issuedWarnings: new Set(), + warn: ( + element, + message, + url, + { type = 'api', level = 'default', issues } = {} + ): void => { + const { localName = 'base' } = element || {}; + const id = `${localName}:${type}:${level}` as BrandedSWCWarningID; + if (!window.__swc.verbose && window.__swc.issuedWarnings.has(id)) { + return; + } + if (window.__swc.ignoreWarningLocalNames[localName]) { + return; + } + if (window.__swc.ignoreWarningTypes[type]) { + return; + } + if (window.__swc.ignoreWarningLevels[level]) { + return; + } + window.__swc.issuedWarnings.add(id); + let listedIssues = ''; + if (issues && issues.length) { + issues.unshift(''); + listedIssues = issues.join('\n - ') + '\n'; + } + const intro = level === 'deprecation' ? 'DEPRECATION NOTICE: ' : ''; + const inspectElement = element + ? '\nInspect this issue in the follow element:' + : ''; + const displayURL = (element ? '\n\n' : '\n') + url + '\n'; + const messages: unknown[] = []; + messages.push(intro + message + '\n' + listedIssues + inspectElement); + if (element) { + messages.push(element); + } + messages.push(displayURL, { + data: { + localName, + type, + level, + }, + }); + console.warn(...messages); + }, + }; + + window.__swc.warn( + undefined, + 'Spectrum Web Components is in dev mode. Not recommended for production!', + 'https://opensource.adobe.com/spectrum-web-components/dev-mode/', + { type: 'default' } + ); } diff --git a/1st-gen/tools/base/src/define-element.ts b/1st-gen/tools/base/src/define-element.ts index 79652b73a8f..76d498ccea4 100644 --- a/1st-gen/tools/base/src/define-element.ts +++ b/1st-gen/tools/base/src/define-element.ts @@ -10,4 +10,22 @@ * governing permissions and limitations under the License. */ -export { defineElement } from '@spectrum-web-components/core/element/define-element.js'; +interface CustomElementConstructor { + new (...params: unknown[]): HTMLElement; +} + +export function defineElement( + name: string, + constructor: CustomElementConstructor +): void { + if (window.__swc && window.__swc.DEBUG) { + if (customElements.get(name)) { + window.__swc.warn( + undefined, + `Attempted to redefine <${name}>. This usually indicates that multiple versions of the same web component were loaded onto a single page.`, + 'https://opensource.adobe.com/spectrum-web-components/registry-conflicts' + ); + } + } + customElements.define(name, constructor); +} diff --git a/1st-gen/tools/base/src/sizedMixin.ts b/1st-gen/tools/base/src/sizedMixin.ts index 2a58d6bd7e8..331d8fce874 100644 --- a/1st-gen/tools/base/src/sizedMixin.ts +++ b/1st-gen/tools/base/src/sizedMixin.ts @@ -9,12 +9,95 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -export { - ElementSizes, - SizedMixin, -} from '@spectrum-web-components/core/mixins/sized-mixin.js'; -export type { - DefaultElementSize, - ElementSize, - SizedElementInterface, -} from '@spectrum-web-components/core/mixins/sized-mixin.js'; +import { PropertyValues, ReactiveElement } from 'lit'; +import { property } from 'lit/decorators.js'; + +export type Constructor> = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (...args: any[]): T; + prototype: T; +}; + +export const ELEMENT_SIZES = ['xxs', 'xs', 's', 'm', 'l', 'xl', 'xxl'] as const; +export type ElementSize = (typeof ELEMENT_SIZES)[number]; + +export const DEFAULT_ELEMENT_SIZES = [ + 's', + 'm', + 'l', + 'xl', +] as const satisfies readonly ElementSize[]; +export type DefaultElementSize = (typeof DEFAULT_ELEMENT_SIZES)[number]; + +export interface SizedElementInterface { + size: ElementSize; +} + +export interface SizedElementConstructor { + readonly VALID_SIZES: readonly ElementSize[]; +} + +export function SizedMixin>( + constructor: T, + { + validSizes = [...DEFAULT_ELEMENT_SIZES], + noDefaultSize, + defaultSize = 'm', + }: { + validSizes?: readonly ElementSize[]; + noDefaultSize?: boolean; + defaultSize?: ElementSize; + } = {} +): T & Constructor & SizedElementConstructor { + class SizedElement extends constructor { + /** + * @internal + */ + static readonly VALID_SIZES: readonly ElementSize[] = validSizes; + + @property({ type: String }) + public get size(): ElementSize { + return this._size || defaultSize; + } + + public set size(value: ElementSize) { + const fallbackSize = noDefaultSize ? null : defaultSize; + const size = (value ? value.toLocaleLowerCase() : value) as ElementSize; + const validSize = ( + validSizes.includes(size) ? size : fallbackSize + ) as ElementSize; + if (validSize) { + this.setAttribute('size', validSize); + } + if (this._size === validSize) { + return; + } + const oldSize = this._size; + this._size = validSize; + this.requestUpdate('size', oldSize); + } + + private _size: ElementSize | null = defaultSize; + + protected override update(changes: PropertyValues): void { + if (!this.hasAttribute('size') && !noDefaultSize) { + this.setAttribute('size', this.size); + } + super.update(changes); + } + } + return SizedElement; +} + +/** + * @deprecated Use `ELEMENT_SIZES` instead. This record will be removed in a future release. + */ +export const ElementSizes: Record = { + xxs: 'xxs', + xs: 'xs', + s: 's', + m: 'm', + l: 'l', + xl: 'xl', + xxl: 'xxl', +}; diff --git a/1st-gen/tools/reactive-controllers/package.json b/1st-gen/tools/reactive-controllers/package.json index 5feb3dfc5b1..b4356af40bc 100644 --- a/1st-gen/tools/reactive-controllers/package.json +++ b/1st-gen/tools/reactive-controllers/package.json @@ -78,7 +78,6 @@ ], "types": "./src/index.d.ts", "dependencies": { - "@spectrum-web-components/core": "0.0.4", "@spectrum-web-components/progress-circle": "1.11.2", "colorjs.io": "0.5.2", "lit": "^2.5.0 || ^3.1.3" diff --git a/1st-gen/tools/reactive-controllers/src/LanguageResolution.ts b/1st-gen/tools/reactive-controllers/src/LanguageResolution.ts index 26a0d116771..7f1166d8c42 100644 --- a/1st-gen/tools/reactive-controllers/src/LanguageResolution.ts +++ b/1st-gen/tools/reactive-controllers/src/LanguageResolution.ts @@ -10,11 +10,144 @@ * governing permissions and limitations under the License. */ +import type { ReactiveController, ReactiveElement } from 'lit'; + +// TODO: Update this when theme is migrated to 2nd-gen +type ProvideLang = { + callback: (lang: string, unsubscribe: () => void) => void; +}; + +/** + * Symbol used to track language resolver updates in reactive element lifecycle. + * When the language context changes, components use this symbol to trigger updates + * to locale-dependent content (e.g., formatted dates, numbers, currency). + */ +export const languageResolverUpdatedSymbol = Symbol( + 'language resolver updated' +); + +// ──────────────────────────────────────────── +// Shared observer (singleton) +// ──────────────────────────────────────────── + +type LangChangeListener = () => void; + +const listeners = new Set(); +let sharedObserver: MutationObserver | undefined; + +function addLangListener(listener: LangChangeListener): () => void { + listeners.add(listener); + + if (!sharedObserver) { + sharedObserver = new MutationObserver(() => { + for (const cb of listeners) { + cb(); + } + }); + sharedObserver.observe(document.documentElement, { + attributes: true, + attributeFilter: ['lang'], + }); + } + + return () => { + listeners.delete(listener); + if (listeners.size === 0) { + sharedObserver?.disconnect(); + sharedObserver = undefined; + } + }; +} + /** - * Re-export LanguageResolutionController from core so 1st-gen and 2nd-gen share - * the same implementation and do not drift. + * A reactive controller that manages language/locale resolution for components. */ -export { - LanguageResolutionController, - languageResolverUpdatedSymbol, -} from '@spectrum-web-components/core/controllers/language-resolution.js'; +export class LanguageResolutionController implements ReactiveController { + private host: ReactiveElement; + + /** + * The currently resolved language/locale code (e.g., 'en-US', 'fr-FR'). + * Defaults to document language, browser language, or 'en-US'. + */ + language = this.getDocumentLanguage(); + + /** Unsubscribe from the sp-language-context provider (if any). */ + private unsubscribe?: () => void; + + /** Unsubscribe from the shared observer. */ + private removeLangListener?: () => void; + + constructor(host: ReactiveElement) { + this.host = host; + this.host.addController(this); + } + + /** + * Reads language from document and validates. Used for initial value and + * when syncing from `` changes. + */ + private getDocumentLanguage(): string { + const raw = document.documentElement.lang || navigator.language || 'en-US'; + try { + Intl.DateTimeFormat.supportedLocalesOf([raw]); + return raw; + } catch { + return 'en-US'; + } + } + + public hostConnected(): void { + this.resolveLanguage(); + this.removeLangListener = addLangListener(this.handleLangChange.bind(this)); + } + + public hostDisconnected(): void { + this.unsubscribe?.(); + this.unsubscribe = undefined; + this.removeLangListener?.(); + this.removeLangListener = undefined; + } + + /** + * Called by the shared observer when `` changes. + * Skipped when a provider (e.g. sp-theme) is the source of truth. + */ + private handleLangChange(): void { + if (this.unsubscribe) { + return; + } + const next = this.getDocumentLanguage(); + if (next === this.language) { + return; + } + const previous = this.language; + this.language = next; + this.host.requestUpdate(languageResolverUpdatedSymbol, previous); + } + + /** + * Resolves the language: syncs from document, then queries for a provider + * (e.g. sp-theme) via 'sp-language-context'. If a provider calls the + * callback, it becomes the source of truth until disconnected. + */ + private resolveLanguage(): void { + this.language = this.getDocumentLanguage(); + const queryThemeEvent = new CustomEvent( + 'sp-language-context', + { + bubbles: true, + composed: true, + detail: { + callback: (lang: string, unsubscribe: () => void) => { + const previous = this.language; + this.language = lang; + this.unsubscribe = unsubscribe; + this.host.requestUpdate(languageResolverUpdatedSymbol, previous); + }, + }, + cancelable: true, + } + ); + this.host.dispatchEvent(queryThemeEvent); + } +} diff --git a/1st-gen/tools/shared/package.json b/1st-gen/tools/shared/package.json index efaca0f4898..2e9299f30bd 100644 --- a/1st-gen/tools/shared/package.json +++ b/1st-gen/tools/shared/package.json @@ -97,7 +97,6 @@ "dependencies": { "@lit-labs/observers": "2.0.2", "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4", "focus-visible": "5.2.1" }, "keywords": [ diff --git a/1st-gen/tools/shared/src/get-label-from-slot.ts b/1st-gen/tools/shared/src/get-label-from-slot.ts index 4ff73a81e9a..66e1aafec7d 100644 --- a/1st-gen/tools/shared/src/get-label-from-slot.ts +++ b/1st-gen/tools/shared/src/get-label-from-slot.ts @@ -9,4 +9,26 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -export { getLabelFromSlot } from '@spectrum-web-components/core/utils/get-label-from-slot.js'; + +export const getLabelFromSlot = ( + label: string, + slotEl: HTMLSlotElement +): string | null => { + if (label) { + return null; + } + const textContent = slotEl + .assignedNodes() + .reduce((accumulator: string, node: Node) => { + if (node.textContent) { + return accumulator + node.textContent; + } else { + return accumulator; + } + }, ''); + if (textContent) { + return textContent.trim(); + } else { + return null; + } +}; diff --git a/1st-gen/tools/shared/src/observe-slot-presence.ts b/1st-gen/tools/shared/src/observe-slot-presence.ts index a58eca0bdaa..7c27b18d2b5 100644 --- a/1st-gen/tools/shared/src/observe-slot-presence.ts +++ b/1st-gen/tools/shared/src/observe-slot-presence.ts @@ -9,5 +9,97 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -export { ObserveSlotPresence } from '@spectrum-web-components/core/mixins/observe-slot-presence.js'; -export type { SlotPresenceObservingInterface } from '@spectrum-web-components/core/mixins/observe-slot-presence.js'; +import { ReactiveElement } from 'lit'; +import { MutationController } from '@lit-labs/observers/mutation-controller.js'; + +const slotContentIsPresent = Symbol('slotContentIsPresent'); + +type Constructor> = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (...args: any[]): T; + prototype: T; +}; + +export interface SlotPresenceObservingInterface { + slotContentIsPresent: boolean; + getSlotContentPresence(selector: string): boolean; + managePresenceObservedSlot(): void; +} + +export function ObserveSlotPresence>( + constructor: T, + lightDomSelector: string | string[] +): T & Constructor { + const lightDomSelectors = Array.isArray(lightDomSelector) + ? lightDomSelector + : [lightDomSelector]; + class SlotPresenceObservingElement + extends constructor + implements SlotPresenceObservingInterface + { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + super(...args); + + new MutationController(this, { + config: { + childList: true, + subtree: true, + }, + callback: () => { + this.managePresenceObservedSlot(); + }, + }); + + this.managePresenceObservedSlot(); + } + + /** + * @internal + */ + public get slotContentIsPresent(): boolean { + if (lightDomSelectors.length === 1) { + return this[slotContentIsPresent].get(lightDomSelectors[0]) || false; + } else { + throw new Error( + 'Multiple selectors provided to `ObserveSlotPresence` use `getSlotContentPresence(selector: string)` instead.' + ); + } + } + private [slotContentIsPresent]: Map = new Map(); + + /** + * @internal + */ + public getSlotContentPresence(selector: string): boolean { + if (this[slotContentIsPresent].has(selector)) { + return this[slotContentIsPresent].get(selector) || false; + } + throw new Error( + `The provided selector \`${selector}\` is not being observed.` + ); + } + + /** + * @internal + */ + public managePresenceObservedSlot = (): void => { + let changes = false; + lightDomSelectors.forEach((selector) => { + const nextValue = !!this.querySelector(`:scope > ${selector}`); + const previousValue = this[slotContentIsPresent].get(selector) || false; + changes = changes || previousValue !== nextValue; + this[slotContentIsPresent].set( + selector, + !!this.querySelector(`:scope > ${selector}`) + ); + }); + if (changes) { + this.updateComplete.then(() => { + this.requestUpdate(); + }); + } + }; + } + return SlotPresenceObservingElement; +} diff --git a/1st-gen/tools/shared/src/observe-slot-text.ts b/1st-gen/tools/shared/src/observe-slot-text.ts index d5d06afae5a..b235322def1 100644 --- a/1st-gen/tools/shared/src/observe-slot-text.ts +++ b/1st-gen/tools/shared/src/observe-slot-text.ts @@ -9,5 +9,115 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -export { ObserveSlotText } from '@spectrum-web-components/core/mixins/observe-slot-text.js'; -export type { SlotTextObservingInterface } from '@spectrum-web-components/core/mixins/observe-slot-text.js'; +import { PropertyValues, ReactiveElement } from 'lit'; +import { property, queryAssignedNodes } from 'lit/decorators.js'; +import { MutationController } from '@lit-labs/observers/mutation-controller.js'; + +const assignedNodesList = Symbol('assignedNodes'); + +type Constructor> = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new (...args: any[]): T; + prototype: T; +}; + +export interface SlotTextObservingInterface { + slotHasContent: boolean; + manageTextObservedSlot(): void; +} + +export function ObserveSlotText>( + constructor: T, + slotName?: string, + excludedSelectors: string[] = [] +): T & Constructor { + const notExcluded = (el: HTMLElement) => (selector: string) => { + return el.matches(selector); + }; + + class SlotTextObservingElement + extends constructor + implements SlotTextObservingInterface + { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + constructor(...args: any[]) { + super(...args); + + new MutationController(this, { + config: { + characterData: true, + subtree: true, + }, + callback: (mutationsList: Array) => { + for (const mutation of mutationsList) { + if (mutation.type === 'characterData') { + this.manageTextObservedSlot(); + return; + } + } + }, + }); + } + + /** + * @internal + */ + @property({ type: Boolean, attribute: false }) + public slotHasContent = false; + + @queryAssignedNodes({ + slot: slotName, + flatten: true, + }) + private [assignedNodesList]!: NodeListOf; + + /** + * @internal + */ + public manageTextObservedSlot(): void { + if (!this[assignedNodesList]) { + return; + } + const assignedNodes = [...this[assignedNodesList]].filter( + (currentNode) => { + const node = currentNode as HTMLElement; + if (node.tagName) { + return !excludedSelectors.some(notExcluded(node)); + } + return node.textContent ? node.textContent.trim() : false; + } + ); + this.slotHasContent = assignedNodes.length > 0; + } + + protected override update(changedProperties: PropertyValues): void { + if (!this.hasUpdated) { + const { childNodes } = this; + const textNodes = [...childNodes].filter((currentNode) => { + const node = currentNode as HTMLElement; + if (node.tagName) { + const excluded = excludedSelectors.some(notExcluded(node)); + return !excluded + ? // This pass happens at element upgrade and before slot rendering. + // Confirm it would exist in a targeted slot if there was one supplied. + slotName + ? node.getAttribute('slot') === slotName + : !node.hasAttribute('slot') + : false; + } + return node.textContent ? node.textContent.trim() : false; + }); + this.slotHasContent = textNodes.length > 0; + } + super.update(changedProperties); + } + + protected override firstUpdated(changedProperties: PropertyValues): void { + super.firstUpdated(changedProperties); + this.updateComplete.then(() => { + this.manageTextObservedSlot(); + }); + } + } + return SlotTextObservingElement; +} diff --git a/1st-gen/tools/styles/tokens-v2/system-theme-bridge.css b/1st-gen/tools/styles/tokens-v2/system-theme-bridge.css index 943c1500a2a..b5136e24753 100644 --- a/1st-gen/tools/styles/tokens-v2/system-theme-bridge.css +++ b/1st-gen/tools/styles/tokens-v2/system-theme-bridge.css @@ -599,17 +599,28 @@ --system-swatch-group-spacing-compact: var(--spectrum-spacing-50); --system-swatch-group-spacing-regular: var(--spectrum-spacing-75); --system-swatch-group-spacing-spacious: var(--spectrum-spacing-100); - --system-switch-handle-border-color-default: var(--spectrum-gray-600); - --system-switch-handle-border-color-hover: var(--spectrum-gray-700); - --system-switch-handle-border-color-down: var(--spectrum-gray-800); - --system-switch-handle-border-color-focus: var(--spectrum-gray-700); - --system-switch-handle-border-color-selected-default: var(--spectrum-gray-700); - --system-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); - --system-switch-handle-border-color-selected-down: var(--spectrum-gray-900); - --system-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); - --system-switch-background-color: var(--spectrum-gray-200); - --system-switch-background-color-disabled: var(--spectrum-gray-200); - --system-switch-handle-background-color: var(--spectrum-gray-50); + --system-switch-border-color-selected-default: var(--spectrum-neutral-background-color-default); + --system-switch-border-color-selected-hover: var(--spectrum-neutral-background-color-hover); + --system-switch-border-color-selected-down: var(--spectrum-neutral-background-color-down); + --system-switch-border-color-selected-focus: var(--spectrum-neutral-background-color-key-focus); + --system-switch-border-color-default: var(--spectrum-neutral-content-color-default); + --system-switch-border-color-hover: var(--spectrum-neutral-content-color-hover); + --system-switch-border-color-down: var(--spectrum-neutral-content-color-down); + --system-switch-border-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-switch-handle-border-color: var(--spectrum-gray-25); + --system-switch-handle-border-color-selected: var(--spectrum-gray-25); + --system-switch-handle-border-color-disabled: var(--spectrum-gray-25); + --system-switch-handle-border-color-selected-disabled: var(--spectrum-gray-25); + --system-switch-handle-background-color-disabled: var(--spectrum-disabled-content-color); + --system-switch-handle-background-color-selected-disabled: var(--spectrum-gray-25); + --system-switch-background-color: var(--spectrum-gray-25); + --system-switch-background-color-emphasized-selected-down: var(--spectrum-accent-color-1000); + --system-switch-background-color-disabled: var(--spectrum-gray-25); + --system-switch-handle-background-color-default: var(--spectrum-neutral-content-color-default); + --system-switch-handle-background-color-hover: var(--spectrum-neutral-content-color-hover); + --system-switch-handle-background-color-down: var(--spectrum-neutral-content-color-down); + --system-switch-handle-background-color-focus: var(--spectrum-neutral-content-color-key-focus); + --system-switch-handle-background-color-selected: var(--spectrum-gray-25); --system-table-header-background-color: var(--spectrum-transparent-white-25); --system-table-border-color: var(--spectrum-gray-200); --system-table-divider-color: var(--spectrum-gray-200); diff --git a/1st-gen/tools/styles/tokens/express/system-theme-bridge.css b/1st-gen/tools/styles/tokens/express/system-theme-bridge.css index 6f93e4a6c3a..4992e4bf751 100644 --- a/1st-gen/tools/styles/tokens/express/system-theme-bridge.css +++ b/1st-gen/tools/styles/tokens/express/system-theme-bridge.css @@ -578,17 +578,28 @@ --system-swatch-group-spacing-compact: var(--spectrum-spacing-50); --system-swatch-group-spacing-regular: var(--spectrum-spacing-75); --system-swatch-group-spacing-spacious: var(--spectrum-spacing-100); - --system-switch-handle-border-color-default: var(--spectrum-gray-800); - --system-switch-handle-border-color-hover: var(--spectrum-gray-900); - --system-switch-handle-border-color-down: var(--spectrum-gray-900); - --system-switch-handle-border-color-focus: var(--spectrum-gray-900); - --system-switch-handle-border-color-selected-default: var(--spectrum-gray-800); - --system-switch-handle-border-color-selected-hover: var(--spectrum-gray-900); - --system-switch-handle-border-color-selected-down: var(--spectrum-gray-900); - --system-switch-handle-border-color-selected-focus: var(--spectrum-gray-900); - --system-switch-background-color: var(--spectrum-gray-300); - --system-switch-background-color-disabled: var(--spectrum-gray-300); - --system-switch-handle-background-color: var(--spectrum-gray-75); + --system-switch-border-color-selected-default: var(--spectrum-gray-800); + --system-switch-border-color-selected-hover: var(--spectrum-gray-900); + --system-switch-border-color-selected-down: var(--spectrum-gray-900); + --system-switch-border-color-selected-focus: var(--spectrum-gray-900); + --system-switch-border-color-default: var(--spectrum-gray-800); + --system-switch-border-color-hover: var(--spectrum-gray-900); + --system-switch-border-color-down: var(--spectrum-gray-900); + --system-switch-border-color-focus: var(--spectrum-gray-900); + --system-switch-handle-border-color: var(--spectrum-gray-75); + --system-switch-handle-border-color-selected: var(--spectrum-gray-75); + --system-switch-handle-border-color-disabled: var(--spectrum-gray-75); + --system-switch-handle-border-color-selected-disabled: var(--spectrum-gray-75); + --system-switch-handle-background-color-disabled: var(--spectrum-disabled-content-color); + --system-switch-handle-background-color-selected-disabled: var(--spectrum-gray-75); + --system-switch-background-color: var(--spectrum-gray-75); + --system-switch-background-color-emphasized-selected-down: var(--spectrum-accent-color-1100); + --system-switch-background-color-disabled: var(--spectrum-gray-75); + --system-switch-handle-background-color-default: var(--spectrum-gray-800); + --system-switch-handle-background-color-hover: var(--spectrum-gray-900); + --system-switch-handle-background-color-down: var(--spectrum-gray-900); + --system-switch-handle-background-color-focus: var(--spectrum-gray-900); + --system-switch-handle-background-color-selected: var(--spectrum-gray-75); --system-table-header-background-color: var(--spectrum-transparent-white-100); --system-table-border-color: var(--spectrum-gray-300); --system-table-divider-color: var(--spectrum-gray-300); diff --git a/1st-gen/tools/styles/tokens/spectrum/system-theme-bridge.css b/1st-gen/tools/styles/tokens/spectrum/system-theme-bridge.css index fe170159a29..6abc31257be 100644 --- a/1st-gen/tools/styles/tokens/spectrum/system-theme-bridge.css +++ b/1st-gen/tools/styles/tokens/spectrum/system-theme-bridge.css @@ -578,17 +578,28 @@ --system-swatch-group-spacing-compact: var(--spectrum-spacing-50); --system-swatch-group-spacing-regular: var(--spectrum-spacing-75); --system-swatch-group-spacing-spacious: var(--spectrum-spacing-100); - --system-switch-handle-border-color-default: var(--spectrum-gray-600); - --system-switch-handle-border-color-hover: var(--spectrum-gray-700); - --system-switch-handle-border-color-down: var(--spectrum-gray-800); - --system-switch-handle-border-color-focus: var(--spectrum-gray-700); - --system-switch-handle-border-color-selected-default: var(--spectrum-gray-700); - --system-switch-handle-border-color-selected-hover: var(--spectrum-gray-800); - --system-switch-handle-border-color-selected-down: var(--spectrum-gray-900); - --system-switch-handle-border-color-selected-focus: var(--spectrum-gray-800); - --system-switch-background-color: var(--spectrum-gray-300); - --system-switch-background-color-disabled: var(--spectrum-gray-300); - --system-switch-handle-background-color: var(--spectrum-gray-75); + --system-switch-border-color-selected-default: var(--spectrum-gray-700); + --system-switch-border-color-selected-hover: var(--spectrum-gray-800); + --system-switch-border-color-selected-down: var(--spectrum-gray-900); + --system-switch-border-color-selected-focus: var(--spectrum-gray-800); + --system-switch-border-color-default: var(--spectrum-gray-600); + --system-switch-border-color-hover: var(--spectrum-gray-700); + --system-switch-border-color-down: var(--spectrum-gray-800); + --system-switch-border-color-focus: var(--spectrum-gray-700); + --system-switch-handle-border-color: var(--spectrum-gray-75); + --system-switch-handle-border-color-selected: var(--spectrum-gray-75); + --system-switch-handle-border-color-disabled: var(--spectrum-gray-75); + --system-switch-handle-border-color-selected-disabled: var(--spectrum-gray-75); + --system-switch-handle-background-color-disabled: var(--spectrum-disabled-content-color); + --system-switch-handle-background-color-selected-disabled: var(--spectrum-gray-75); + --system-switch-background-color: var(--spectrum-gray-75); + --system-switch-background-color-emphasized-selected-down: var(--spectrum-accent-color-1100); + --system-switch-background-color-disabled: var(--spectrum-gray-75); + --system-switch-handle-background-color-default: var(--spectrum-gray-600); + --system-switch-handle-background-color-hover: var(--spectrum-gray-700); + --system-switch-handle-background-color-down: var(--spectrum-gray-800); + --system-switch-handle-background-color-focus: var(--spectrum-gray-700); + --system-switch-handle-background-color-selected: var(--spectrum-gray-75); --system-table-header-background-color: var(--spectrum-transparent-white-100); --system-table-border-color: var(--spectrum-gray-300); --system-table-divider-color: var(--spectrum-gray-300); diff --git a/1st-gen/tools/theme/package.json b/1st-gen/tools/theme/package.json index 01de1ab036a..a80aff86818 100755 --- a/1st-gen/tools/theme/package.json +++ b/1st-gen/tools/theme/package.json @@ -298,7 +298,6 @@ "types": "./src/index.d.ts", "dependencies": { "@spectrum-web-components/base": "1.11.2", - "@spectrum-web-components/core": "0.0.4", "@spectrum-web-components/styles": "1.11.2" }, "keywords": [ diff --git a/2nd-gen/README.md b/2nd-gen/README.md index d4d91910e11..c167faca200 100644 --- a/2nd-gen/README.md +++ b/2nd-gen/README.md @@ -4,7 +4,7 @@ This workspace contains the second generation of Spectrum Web Components, built ## Packages -- **[@spectrum-web-components/core](./packages/core)** - Abstract base classes providing shared functionality +- **[@spectrum-web-components/core](./packages/core)** - Abstract base classes providing behavior and API for 2nd-gen components - **[@adobe/spectrum-wc](./packages/swc)** - Concrete component implementations with styling ## About SWC diff --git a/2nd-gen/packages/core/MIGRATION.md b/2nd-gen/packages/core/MIGRATION.md index 5944c0feb71..dfc0e5a8a78 100644 --- a/2nd-gen/packages/core/MIGRATION.md +++ b/2nd-gen/packages/core/MIGRATION.md @@ -1,6 +1,8 @@ # Migration guide -When migrating functionality from 1st-gen to 2nd-gen `@spectrum-web-components/core`, place files according to their type: +> **Note:** 1st-gen and 2nd-gen are **independent** — there is no runtime dependency between them. Code in 2nd-gen core is for 2nd-gen components only. 1st-gen has its own self-contained implementations. + +When building 2nd-gen components (using 1st-gen as a reference), place files according to their type: | Type | Location | Examples | | ---------------------- | -------------- | ----------------------------------- | diff --git a/2nd-gen/packages/core/README.md b/2nd-gen/packages/core/README.md index 3c7cb787afb..de1ed0b093e 100644 --- a/2nd-gen/packages/core/README.md +++ b/2nd-gen/packages/core/README.md @@ -2,7 +2,7 @@ Abstract base classes for Spectrum Web Components. -This package provides shared functionality between multiple generations of implementations and is **not intended for direct external use**. +This package provides the behavior layer for 2nd-gen Spectrum Web Components and is **not intended for direct external use**. It is independent from 1st-gen — there is no runtime dependency between them. For more information, visit the [Spectrum Web Components repository](https://github.com/adobe/spectrum-web-components). diff --git a/2nd-gen/packages/core/components/alert-banner/AlertBanner.base.ts b/2nd-gen/packages/core/components/alert-banner/AlertBanner.base.ts index 1d0bb4d3cb8..b0d5a5cfc15 100644 --- a/2nd-gen/packages/core/components/alert-banner/AlertBanner.base.ts +++ b/2nd-gen/packages/core/components/alert-banner/AlertBanner.base.ts @@ -14,29 +14,37 @@ import { property } from 'lit/decorators.js'; import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; -const VALID_VARIANTS = ['neutral', 'info', 'negative']; -export type AlertBannerVariants = (typeof VALID_VARIANTS)[number]; +import { + ALERT_BANNER_VALID_VARIANTS, + type AlertBannerVariant, +} from './AlertBanner.types.js'; /** - * Base class for alert banner components + * An alert banner shows pressing and high-signal messages, such as system alerts. + * It is meant to be noticed and prompt users to take action. + * + * @slot - The main content of the alert banner. + * @slot action - An optional action button for the alert banner. + * + * @fires close - Dispatched when the alert banner is dismissed. Cancelable. */ export abstract class AlertBannerBase extends SpectrumElement { public static override get styles(): CSSResultArray { return []; } + // ────────────────── + // SHARED API + // ────────────────── + /** - * Controls the display of the alert banner - * - * @param {boolean} open + * Controls the display of the alert banner. */ @property({ type: Boolean, reflect: true }) public open = false; /** - * Whether to include an icon-only close button to dismiss the alert banner - * - * @param {boolean} dismissible + * Whether to include an icon-only close button to dismiss the alert banner. */ @property({ type: Boolean, reflect: true }) public dismissible = false; @@ -44,11 +52,9 @@ export abstract class AlertBannerBase extends SpectrumElement { /** * The variant applies specific styling when set to `negative` or `info`; * `variant` attribute is removed when it's passed an invalid variant. - * - * @param {string} variant */ @property({ type: String }) - public set variant(variant: AlertBannerVariants) { + public set variant(variant: AlertBannerVariant) { if (variant === this.variant) { return; } @@ -67,7 +73,7 @@ export abstract class AlertBannerBase extends SpectrumElement { `<${this.localName}> element expects the "variant" attribute to be one of the following:`, 'https://opensource.adobe.com/spectrum-web-components/components/alert-banner/#variants', { - issues: [...VALID_VARIANTS], + issues: [...ALERT_BANNER_VALID_VARIANTS], } ); } @@ -75,14 +81,18 @@ export abstract class AlertBannerBase extends SpectrumElement { this.requestUpdate('variant', oldValue); } - public get variant(): AlertBannerVariants { + public get variant(): AlertBannerVariant { return this._variant; } - private _variant: AlertBannerVariants = ''; + private _variant: AlertBannerVariant = ''; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── protected isValidVariant(variant: string): boolean { - return VALID_VARIANTS.includes(variant); + return (ALERT_BANNER_VALID_VARIANTS as readonly string[]).includes(variant); } protected abstract renderIcon(variant: string): TemplateResult; diff --git a/2nd-gen/packages/core/components/alert-banner/AlertBanner.types.ts b/2nd-gen/packages/core/components/alert-banner/AlertBanner.types.ts new file mode 100644 index 00000000000..43c94a553e9 --- /dev/null +++ b/2nd-gen/packages/core/components/alert-banner/AlertBanner.types.ts @@ -0,0 +1,27 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +export const ALERT_BANNER_VALID_VARIANTS = [ + 'neutral', + 'info', + 'negative', +] as const satisfies readonly string[]; + +export type AlertBannerVariant = + | (typeof ALERT_BANNER_VALID_VARIANTS)[number] + | ''; + +/** + * @deprecated Use `AlertBannerVariant` instead. + * Kept as `string` for backward compatibility with 1st-gen. + */ +export type AlertBannerVariants = string; diff --git a/2nd-gen/packages/core/components/alert-banner/index.ts b/2nd-gen/packages/core/components/alert-banner/index.ts index 8334ab1872a..90e62844403 100644 --- a/2nd-gen/packages/core/components/alert-banner/index.ts +++ b/2nd-gen/packages/core/components/alert-banner/index.ts @@ -10,3 +10,4 @@ * governing permissions and limitations under the License. */ export * from './AlertBanner.base.js'; +export * from './AlertBanner.types.js'; diff --git a/2nd-gen/packages/core/components/asset/Asset.types.ts b/2nd-gen/packages/core/components/asset/Asset.types.ts index 2b5d01c2548..e67d9b25f2f 100644 --- a/2nd-gen/packages/core/components/asset/Asset.types.ts +++ b/2nd-gen/packages/core/components/asset/Asset.types.ts @@ -10,6 +10,9 @@ * governing permissions and limitations under the License. */ -export const ASSET_VARIANTS = ['file', 'folder'] as const; +export const ASSET_VARIANTS = [ + 'file', + 'folder', +] as const satisfies readonly string[]; export type AssetVariant = (typeof ASSET_VARIANTS)[number]; diff --git a/2nd-gen/packages/core/components/avatar/Avatar.base.ts b/2nd-gen/packages/core/components/avatar/Avatar.base.ts new file mode 100644 index 00000000000..df8c676cc1d --- /dev/null +++ b/2nd-gen/packages/core/components/avatar/Avatar.base.ts @@ -0,0 +1,166 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { PropertyValues } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import { + AVATAR_DEFAULT_SIZE, + AVATAR_VALID_SIZES, + type AvatarSize, +} from './Avatar.types.js'; + +/** + * Base class for the avatar component. + * + * Provides the core API for displaying a circular profile image. Concrete + * classes supply the stylesheet and render template. + */ +export abstract class AvatarBase extends SpectrumElement { + // ───────────────────────── + // STATIC + // ───────────────────────── + + /** + * @internal + * + * The set of valid numeric size values for the avatar. + * + * This is an internal property not intended for consumer use, but used in + * internal validation logic, stories, and tests to keep them in sync with + * the canonical type definition in `Avatar.types.ts`. + */ + static readonly VALID_SIZES: readonly AvatarSize[] = AVATAR_VALID_SIZES; + + // ────────────────── + // CORE API + // ────────────────── + + /** + * URL of the profile image to display. + */ + @property({ type: String }) + public src = ''; + + /** + * Text description of the avatar image. + */ + @property({ type: String }) + public alt: string | undefined; + + // ─────────────────── + // SIZE API + // ─────────────────── + + /** + * The size of the avatar. Invalid values fall back to the default (500). + */ + @property({ type: Number, reflect: true }) + public get size(): AvatarSize { + return this._size; + } + + public set size(value: AvatarSize) { + const validSize = (AVATAR_VALID_SIZES as readonly number[]).includes( + Number(value) + ) + ? (Number(value) as AvatarSize) + : AVATAR_DEFAULT_SIZE; + + if (this._size === validSize) { + return; + } + + const oldSize = this._size; + this._size = validSize; + this.requestUpdate('size', oldSize); + } + + private _size: AvatarSize = AVATAR_DEFAULT_SIZE; + + // ─────────────────────── + // VISUAL API + // ─────────────────────── + + /** + * Renders a visual outline around the avatar image. + */ + @property({ type: Boolean, reflect: true }) + public outline = false; + + /** + * Renders the avatar at reduced opacity, indicating the entity is inactive or unavailable. + */ + @property({ type: Boolean, reflect: true }) + public disabled = false; + + // ─────────────────────────── + // ACCESSIBILITY API + // ─────────────────────────── + + /** + * Marks the avatar as decorative, hiding it from assistive technology. + */ + @property({ type: Boolean, reflect: true }) + public decorative = false; + + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + + protected override firstUpdated(changes: PropertyValues): void { + super.firstUpdated(changes); + if (!this.hasAttribute('size')) { + this.setAttribute('size', String(this.size)); + } + this._syncAriaHidden(); + if (window.__swc?.DEBUG) { + this._warnMissingAlt(); + } + } + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + if (changes.has('decorative')) { + this._syncAriaHidden(); + } + if (changes.has('alt') && window.__swc?.DEBUG) { + this._warnMissingAlt(); + } + } + + private _syncAriaHidden(): void { + if (this.decorative) { + this.setAttribute('aria-hidden', 'true'); + } else { + this.removeAttribute('aria-hidden'); + } + } + + private _warnMissingAlt(): void { + if (this.alt === undefined && !this.decorative) { + window.__swc?.warn( + this, + `<${this.localName}> is missing an \`alt\` attribute. Provide a text description or pass \`alt=""\` and mark it as \`decorative\`.`, + 'https://opensource.adobe.com/spectrum-web-components/components/avatar/#accessibility', + { + type: 'accessibility', + issues: [ + 'Provide an `alt` attribute with meaningful alternative text, or', + 'Set `alt=""` and mark the image as `decorative` (hidden from screen readers).', + ], + } + ); + } + } +} diff --git a/2nd-gen/packages/core/components/avatar/Avatar.types.ts b/2nd-gen/packages/core/components/avatar/Avatar.types.ts new file mode 100644 index 00000000000..a06838645e4 --- /dev/null +++ b/2nd-gen/packages/core/components/avatar/Avatar.types.ts @@ -0,0 +1,25 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/** + * Valid numeric size values for the Avatar component. + * + * Sizes 50–700 match 1st-gen. Sizes 800–1500 are new in Spectrum 2. + */ +export const AVATAR_VALID_SIZES = [ + 50, 75, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, + 1400, 1500, +] as const; + +export type AvatarSize = (typeof AVATAR_VALID_SIZES)[number]; + +export const AVATAR_DEFAULT_SIZE = 500 as const satisfies AvatarSize; diff --git a/2nd-gen/packages/core/components/avatar/index.ts b/2nd-gen/packages/core/components/avatar/index.ts new file mode 100644 index 00000000000..c04a8cb1730 --- /dev/null +++ b/2nd-gen/packages/core/components/avatar/index.ts @@ -0,0 +1,13 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +export * from './Avatar.base.js'; +export * from './Avatar.types.js'; diff --git a/2nd-gen/packages/core/components/badge/Badge.base.ts b/2nd-gen/packages/core/components/badge/Badge.base.ts index bd8f8d15624..aa78726dac0 100644 --- a/2nd-gen/packages/core/components/badge/Badge.base.ts +++ b/2nd-gen/packages/core/components/badge/Badge.base.ts @@ -32,6 +32,8 @@ import { * * @slot - Text label of the badge. * @slot icon - Optional icon that appears to the left of the label + * + * @todo review the mixin composition here. We currently have 3 levels of mixins on this class, but the mixin composition guide recommends a maximum of 2. */ export abstract class BadgeBase extends SizedMixin( ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]'), ''), @@ -103,7 +105,7 @@ export abstract class BadgeBase extends SizedMixin( * * @todo The purpose of the bespoke getter and setter is unclear, as it * looks like they may be behaving just like a standard Lit reactive - * property. Explore replacing after the Barebones milestone. + * property. Explore replacing after milestone 2. */ @property({ reflect: true }) public get fixed(): FixedValues | undefined { @@ -131,12 +133,19 @@ export abstract class BadgeBase extends SizedMixin( // ────────────────────── /** - * @internal Used for rendering gap when the badge has an icon. + * Used for rendering gap when the badge has an icon. + * + * @internal */ protected get hasIcon(): boolean { return this.slotContentIsPresent; } + /** + * @todo Migrate from update() to updated() for consistency with other + * components. The standard pattern is to use updated() for post-render + * validation (debug warnings). + */ protected override update(changedProperties: PropertyValues): void { super.update(changedProperties); if (window.__swc?.DEBUG) { diff --git a/2nd-gen/packages/core/components/badge/Badge.types.ts b/2nd-gen/packages/core/components/badge/Badge.types.ts index b77fd69bd1b..9d6b3af36a2 100644 --- a/2nd-gen/packages/core/components/badge/Badge.types.ts +++ b/2nd-gen/packages/core/components/badge/Badge.types.ts @@ -10,25 +10,22 @@ * governing permissions and limitations under the License. */ -import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; - /* * @todo The S1 types can be removed once we are no longer maintaining 1st-gen. */ -export const FIXED_VALUES = [ - 'block-start', - 'block-end', - 'inline-start', - 'inline-end', -] as const; +import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; + +// ────────────────── +// SHARED +// ────────────────── export const BADGE_VALID_SIZES = [ 's', 'm', 'l', 'xl', -] as const satisfies ElementSize[]; +] as const satisfies readonly ElementSize[]; export const BADGE_VARIANTS_SEMANTIC = [ 'accent', @@ -39,7 +36,7 @@ export const BADGE_VARIANTS_SEMANTIC = [ 'negative', ] as const; -export const BADGE_VARIANTS_COLOR_S1 = [ +export const BADGE_VARIANTS_COLOR = [ 'fuchsia', 'indigo', 'magenta', @@ -54,10 +51,6 @@ export const BADGE_VARIANTS_COLOR_S1 = [ 'green', 'cyan', 'blue', -] as const; - -export const BADGE_VARIANTS_COLOR_S2 = [ - ...BADGE_VARIANTS_COLOR_S1, 'pink', 'turquoise', 'brown', @@ -65,21 +58,61 @@ export const BADGE_VARIANTS_COLOR_S2 = [ 'silver', ] as const; +export const FIXED_VALUES = [ + 'block-start', + 'block-end', + 'inline-start', + 'inline-end', +] as const; + +// ────────────────────────────────────────── +// S1-ONLY (remove with 1st-gen) +// ────────────────────────────────────────── + +export const BADGE_VARIANTS_COLOR_S1 = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', + 'gray', + 'red', + 'orange', + 'chartreuse', + 'celery', + 'green', + 'cyan', + 'blue', +] as const satisfies readonly BadgeColorVariant[]; + export const BADGE_VARIANTS_S1 = [ ...BADGE_VARIANTS_SEMANTIC, ...BADGE_VARIANTS_COLOR_S1, ] as const; -export const BADGE_VARIANTS_S2 = [ +// ────────────────── +// CANONICAL +// ────────────────── + +export const BADGE_VARIANTS = [ ...BADGE_VARIANTS_SEMANTIC, - ...BADGE_VARIANTS_COLOR_S2, + ...BADGE_VARIANTS_COLOR, ] as const; +// ────────────────── +// TYPES +// ────────────────── + +// Shared export type FixedValues = (typeof FIXED_VALUES)[number]; export type BadgeSize = (typeof BADGE_VALID_SIZES)[number]; export type BadgeSemanticVariant = (typeof BADGE_VARIANTS_SEMANTIC)[number]; -export type BadgeColorVariantS1 = (typeof BADGE_VARIANTS_COLOR_S1)[number]; -export type BadgeColorVariantS2 = (typeof BADGE_VARIANTS_COLOR_S2)[number]; -export type BadgeVariantS1 = (typeof BADGE_VARIANTS_S1)[number]; -export type BadgeVariantS2 = (typeof BADGE_VARIANTS_S2)[number]; -export type BadgeVariant = BadgeVariantS1 | BadgeVariantS2; + +// S1-only (remove with 1st-gen) +export type BadgeColorVariantS1 = (typeof BADGE_VARIANTS_COLOR_S1)[number]; // remove with 1st-gen +export type BadgeVariantS1 = (typeof BADGE_VARIANTS_S1)[number]; // remove with 1st-gen + +// Canonical +export type BadgeColorVariant = (typeof BADGE_VARIANTS_COLOR)[number]; +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; diff --git a/2nd-gen/packages/core/components/divider/Divider.base.ts b/2nd-gen/packages/core/components/divider/Divider.base.ts index d54f8ebf343..050cd99eec0 100644 --- a/2nd-gen/packages/core/components/divider/Divider.base.ts +++ b/2nd-gen/packages/core/components/divider/Divider.base.ts @@ -23,13 +23,19 @@ import { } from './Divider.types.js'; /** - * @element swc-divider + * A divider separates and distinguishes sections of content or groups of menu items. + * + * @attribute {ElementSize} size - The size of the divider. */ export abstract class DividerBase extends SizedMixin(SpectrumElement, { validSizes: DIVIDER_VALID_SIZES, /**@todo the design spec says the default size is small but we declare no default size */ noDefaultSize: true, }) { + // ────────────────── + // SHARED API + // ────────────────── + /** * @internal * @@ -53,6 +59,10 @@ export abstract class DividerBase extends SizedMixin(SpectrumElement, { @property({ reflect: true, attribute: 'static-color' }) public staticColor?: DividerStaticColor; + // ────────────────────── + // IMPLEMENTATION + // ────────────────────── + protected override firstUpdated(changed: PropertyValues): void { super.firstUpdated(changed); this.setAttribute('role', 'separator'); diff --git a/2nd-gen/packages/core/components/divider/Divider.types.ts b/2nd-gen/packages/core/components/divider/Divider.types.ts index f2e9469e1b6..263627ef7d2 100644 --- a/2nd-gen/packages/core/components/divider/Divider.types.ts +++ b/2nd-gen/packages/core/components/divider/Divider.types.ts @@ -17,7 +17,10 @@ export const DIVIDER_VALID_SIZES = [ 'm', 'l', ] as const satisfies ElementSize[]; -export const DIVIDER_STATIC_COLORS = ['white', 'black'] as const; +export const DIVIDER_STATIC_COLORS = [ + 'white', + 'black', +] as const satisfies readonly string[]; export type DividerStaticColor = (typeof DIVIDER_STATIC_COLORS)[number]; diff --git a/2nd-gen/packages/core/components/progress-circle/ProgressCircle.types.ts b/2nd-gen/packages/core/components/progress-circle/ProgressCircle.types.ts index df855e8a9cd..c54535523d5 100644 --- a/2nd-gen/packages/core/components/progress-circle/ProgressCircle.types.ts +++ b/2nd-gen/packages/core/components/progress-circle/ProgressCircle.types.ts @@ -12,7 +12,7 @@ import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; -export const PROGRESS_CIRCLE_VALID_SIZES: ElementSize[] = [ +export const PROGRESS_CIRCLE_VALID_SIZES = [ 's', 'm', 'l', diff --git a/2nd-gen/packages/core/components/status-light/StatusLight.base.ts b/2nd-gen/packages/core/components/status-light/StatusLight.base.ts index 6e170713c52..d203b06c57c 100644 --- a/2nd-gen/packages/core/components/status-light/StatusLight.base.ts +++ b/2nd-gen/packages/core/components/status-light/StatusLight.base.ts @@ -15,14 +15,19 @@ import { property } from 'lit/decorators.js'; import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; import { SizedMixin } from '@spectrum-web-components/core/mixins/index.js'; -import { type StatusLightVariant } from './StatusLight.types.js'; +import { + STATUSLIGHT_VALID_SIZES, + type StatusLightVariant, +} from './StatusLight.types.js'; /** * A status light is a great way to convey semantic meaning and the condition of an entity, such as statuses and categories. It provides visual indicators through colored dots accompanied by descriptive text. * * @slot - The text label of the status light. + * @attribute {ElementSize} size - The size of the status light. */ export abstract class StatusLightBase extends SizedMixin(SpectrumElement, { + validSizes: STATUSLIGHT_VALID_SIZES, noDefaultSize: true, }) { // ───────────────────────── diff --git a/2nd-gen/packages/core/components/status-light/StatusLight.types.ts b/2nd-gen/packages/core/components/status-light/StatusLight.types.ts index 10e1b60dfb4..00588087905 100644 --- a/2nd-gen/packages/core/components/status-light/StatusLight.types.ts +++ b/2nd-gen/packages/core/components/status-light/StatusLight.types.ts @@ -10,17 +10,21 @@ * governing permissions and limitations under the License. */ -/* +/** * @todo The S1 types can be removed once we are no longer maintaining 1st-gen. + * @todo Rename STATUSLIGHT_ prefix to STATUS_LIGHT_ to align with type prefix + * naming convention (use underscore separators for multi-word names). This + * requires updating all imports in 1st-gen and 2nd-gen that reference these + * constants. */ import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; -export const STATUSLIGHT_VALID_SIZES: ElementSize[] = [ +export const STATUSLIGHT_VALID_SIZES = [ 's', 'm', 'l', 'xl', -] as const satisfies ElementSize[]; +] as const satisfies readonly ElementSize[]; export const STATUSLIGHT_VARIANTS_SEMANTIC = [ 'neutral', diff --git a/2nd-gen/packages/core/element/spectrum-element.ts b/2nd-gen/packages/core/element/spectrum-element.ts index 5403b644c51..db128d52bc6 100644 --- a/2nd-gen/packages/core/element/spectrum-element.ts +++ b/2nd-gen/packages/core/element/spectrum-element.ts @@ -33,6 +33,7 @@ export function SpectrumMixin>( * @internal */ public override shadowRoot!: ShadowRoot; + /** @internal */ public hasVisibleFocusInTree(): boolean { const getAncestors = (root: Document = document): HTMLElement[] => { let currentNode = root.activeElement as HTMLElement; diff --git a/2nd-gen/packages/core/mixins/index.ts b/2nd-gen/packages/core/mixins/index.ts index c40527ff537..f8343051236 100644 --- a/2nd-gen/packages/core/mixins/index.ts +++ b/2nd-gen/packages/core/mixins/index.ts @@ -18,7 +18,11 @@ export { ObserveSlotText, type SlotTextObservingInterface, } from './observe-slot-text.js'; -export { ElementSizes, SizedMixin } from './sized-mixin.js'; +export { + DEFAULT_ELEMENT_SIZES, + ELEMENT_SIZES, + SizedMixin, +} from './sized-mixin.js'; export type { DefaultElementSize, ElementSize, diff --git a/2nd-gen/packages/core/mixins/observe-slot-text.ts b/2nd-gen/packages/core/mixins/observe-slot-text.ts index 0368cceb9b6..b235322def1 100644 --- a/2nd-gen/packages/core/mixins/observe-slot-text.ts +++ b/2nd-gen/packages/core/mixins/observe-slot-text.ts @@ -99,7 +99,7 @@ export function ObserveSlotText>( const excluded = excludedSelectors.some(notExcluded(node)); return !excluded ? // This pass happens at element upgrade and before slot rendering. - // Confirm it would exisit in a targeted slot if there was one supplied. + // Confirm it would exist in a targeted slot if there was one supplied. slotName ? node.getAttribute('slot') === slotName : !node.hasAttribute('slot') diff --git a/2nd-gen/packages/core/mixins/sized-mixin.ts b/2nd-gen/packages/core/mixins/sized-mixin.ts index 3815496e900..269e4f10473 100644 --- a/2nd-gen/packages/core/mixins/sized-mixin.ts +++ b/2nd-gen/packages/core/mixins/sized-mixin.ts @@ -18,34 +18,33 @@ type Constructor> = { prototype: T; }; -export type ElementSize = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl'; -export const ElementSizes: Record = { - xxs: 'xxs', - xs: 'xs', - s: 's', - m: 'm', - l: 'l', - xl: 'xl', - xxl: 'xxl', -}; -export type DefaultElementSize = Exclude; +export const ELEMENT_SIZES = ['xxs', 'xs', 's', 'm', 'l', 'xl', 'xxl'] as const; +export type ElementSize = (typeof ELEMENT_SIZES)[number]; + +export const DEFAULT_ELEMENT_SIZES = [ + 's', + 'm', + 'l', + 'xl', +] as const satisfies readonly ElementSize[]; +export type DefaultElementSize = (typeof DEFAULT_ELEMENT_SIZES)[number]; export interface SizedElementInterface { size: ElementSize; } export interface SizedElementConstructor { - readonly VALID_SIZES: ElementSize[]; + readonly VALID_SIZES: readonly ElementSize[]; } export function SizedMixin>( constructor: T, { - validSizes = ['s', 'm', 'l', 'xl'], + validSizes = [...DEFAULT_ELEMENT_SIZES], noDefaultSize, defaultSize = 'm', }: { - validSizes?: ElementSize[]; + validSizes?: readonly ElementSize[]; noDefaultSize?: boolean; defaultSize?: ElementSize; } = {} @@ -54,7 +53,7 @@ export function SizedMixin>( /** * @internal */ - static readonly VALID_SIZES: ElementSize[] = validSizes; + static readonly VALID_SIZES: readonly ElementSize[] = validSizes; @property({ type: String }) public get size(): ElementSize { diff --git a/2nd-gen/packages/core/package.json b/2nd-gen/packages/core/package.json index 5e95c0d0282..625db6a1a4d 100644 --- a/2nd-gen/packages/core/package.json +++ b/2nd-gen/packages/core/package.json @@ -23,6 +23,10 @@ "types": "./dist/components/asset/index.d.ts", "import": "./dist/components/asset/index.js" }, + "./components/avatar": { + "types": "./dist/components/avatar/index.d.ts", + "import": "./dist/components/avatar/index.js" + }, "./components/badge": { "types": "./dist/components/badge/index.d.ts", "import": "./dist/components/badge/index.js" @@ -131,6 +135,9 @@ "components/asset": [ "dist/components/asset/index.d.ts" ], + "components/avatar": [ + "dist/components/avatar/index.d.ts" + ], "components/badge": [ "dist/components/badge/index.d.ts" ], diff --git a/2nd-gen/packages/swc/.storybook/DocumentTemplate.mdx b/2nd-gen/packages/swc/.storybook/DocumentTemplate.mdx index 2f55ce89cd5..cd6aeae4ccc 100644 --- a/2nd-gen/packages/swc/.storybook/DocumentTemplate.mdx +++ b/2nd-gen/packages/swc/.storybook/DocumentTemplate.mdx @@ -9,7 +9,13 @@ import { Subtitle, useOf, } from '@storybook/addon-docs/blocks'; -import { GettingStarted, SpectrumStories, OverviewStory } from './blocks'; +import { + DocsAfterApiMarkdown, + GettingStarted, + SpectrumStories, + OverviewStory, + StatusBadge, +} from './blocks'; export const checkIsSingleStory = () => { const resolvedOf = useOf('meta', ['meta']); @@ -65,6 +71,7 @@ export const ConditionalGettingStarted = () => { +<StatusBadge /> <Subtitle /> <Description /> <SingleStoryDescription /> @@ -76,11 +83,13 @@ export const ConditionalGettingStarted = () => { <ConditionalSection tag="states" title="States" /> <ConditionalSection tag="behaviors" title="Behaviors" /> <ConditionalSection tag="a11y" title="Accessibility" hideTitle={true} /> +<ConditionalSection tag="full-pattern" title="Full pattern" /> ## API <Primary /> <Controls /> +<DocsAfterApiMarkdown /> <AdvancedExamplesStories /> ## Feedback diff --git a/2nd-gen/packages/swc/.storybook/addons/screen-reader-addon/src/register.tsx b/2nd-gen/packages/swc/.storybook/addons/screen-reader-addon/src/register.tsx index 57628d20a8c..7990ff605e5 100644 --- a/2nd-gen/packages/swc/.storybook/addons/screen-reader-addon/src/register.tsx +++ b/2nd-gen/packages/swc/.storybook/addons/screen-reader-addon/src/register.tsx @@ -1,5 +1,5 @@ /** - * Copyright 2025 Adobe. All rights reserved. + * Copyright 2026 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 diff --git a/2nd-gen/packages/swc/.storybook/blocks/DocsAfterApiMarkdown.tsx b/2nd-gen/packages/swc/.storybook/blocks/DocsAfterApiMarkdown.tsx new file mode 100644 index 00000000000..54e75e19dba --- /dev/null +++ b/2nd-gen/packages/swc/.storybook/blocks/DocsAfterApiMarkdown.tsx @@ -0,0 +1,28 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { Markdown, useOf } from '@storybook/addon-docs/blocks'; +import React from 'react'; + +/** + * Renders `parameters.docs.afterApi` (markdown) immediately after the API / Controls table. + */ +export const DocsAfterApiMarkdown = () => { + const resolvedOf = useOf('meta', ['meta']); + const md = resolvedOf.preparedMeta?.parameters?.docs?.afterApi; + + if (!md || typeof md !== 'string') { + return null; + } + + return <Markdown>{md}</Markdown>; +}; diff --git a/2nd-gen/packages/swc/.storybook/blocks/StatusBadge.tsx b/2nd-gen/packages/swc/.storybook/blocks/StatusBadge.tsx new file mode 100644 index 00000000000..4025672fe5d --- /dev/null +++ b/2nd-gen/packages/swc/.storybook/blocks/StatusBadge.tsx @@ -0,0 +1,115 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { useOf } from '@storybook/addon-docs/blocks'; +import React, { useEffect, useRef } from 'react'; +import customElements from '../custom-elements.json' with { type: 'json' }; + +// Register the badge component for use in the docs iframe +import '../../components/badge/index.js'; + +type Status = 'preview' | 'deprecated' | 'internal'; + +const STATUS_CONFIG: Record<Status, { label: string; variant: string }> = { + preview: { label: 'Preview', variant: 'notice' }, + deprecated: { label: 'Deprecated', variant: 'negative' }, + internal: { label: 'Internal', variant: 'neutral' }, +}; + +/** + * Renders a single `<swc-badge>` via a ref, since React's JSX doesn't + * natively type custom elements without global augmentation. + */ +const Badge = ({ + variant, + outline, + children, +}: { + variant: string; + outline?: boolean; + children: string; +}) => { + const ref = useRef<HTMLElement>(null); + + useEffect(() => { + const el = ref.current; + if (!el) return; + el.setAttribute('size', 's'); + el.setAttribute('variant', variant); + if (outline) { + el.setAttribute('outline', ''); + } else { + el.removeAttribute('outline'); + } + el.textContent = children; + }, [variant, outline, children]); + + return React.createElement('swc-badge', { ref }); +}; + +/** + * Renders status and "since" badges for a component using `<swc-badge>`, + * sourced from the Custom Elements Manifest. + * + * The component class must include `@status` and/or `@since` JSDoc tags: + * + * ```ts + * /** + * * @element swc-my-component + * * @status preview + * * @since 1.0.0 + * *\/ + * ``` + * + * These are extracted into the CEM by the `statusPlugin` in `cem.config.js` + * and read at render time from `custom-elements.json`. + */ +export const StatusBadge = ({ of }: { of?: any }) => { + const resolvedOf = useOf(of || 'meta', ['meta']); + const componentTag = resolvedOf.preparedMeta?.component; + + if (!componentTag) return null; + + // Look up component declaration in the CEM + let status: string | undefined; + let since: string | undefined; + + for (const mod of (customElements as any).modules ?? []) { + const decl = (mod.declarations ?? []).find( + (d: any) => d.tagName === componentTag + ); + if (decl) { + status = decl.status; + since = decl.since; + break; + } + } + + const hasStatus = status && status in STATUS_CONFIG; + + if (!hasStatus && !since) return null; + + const statusConfig = hasStatus ? STATUS_CONFIG[status as Status] : undefined; + + return ( + <div style={{ display: 'flex', gap: '6px', marginBottom: '12px' }}> + {statusConfig && ( + <Badge variant={statusConfig.variant}>{statusConfig.label}</Badge> + )} + {since && ( + <Badge variant="neutral" outline> + {`Since ${since}`} + </Badge> + )} + </div> + ); +}; diff --git a/2nd-gen/packages/swc/.storybook/blocks/index.ts b/2nd-gen/packages/swc/.storybook/blocks/index.ts index 74835c320e1..4e539134caf 100644 --- a/2nd-gen/packages/swc/.storybook/blocks/index.ts +++ b/2nd-gen/packages/swc/.storybook/blocks/index.ts @@ -9,7 +9,9 @@ * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ +export * from './DocsAfterApiMarkdown'; export * from './GettingStarted'; export * from './OverviewStory'; export * from './SpectrumDocs'; export * from './SpectrumStories'; +export * from './StatusBadge'; diff --git a/2nd-gen/packages/swc/.storybook/guides/accessibility-guides/semantic_html_aria.mdx b/2nd-gen/packages/swc/.storybook/guides/accessibility-guides/semantic_html_aria.mdx index db829e9cae1..e8dfff0326e 100644 --- a/2nd-gen/packages/swc/.storybook/guides/accessibility-guides/semantic_html_aria.mdx +++ b/2nd-gen/packages/swc/.storybook/guides/accessibility-guides/semantic_html_aria.mdx @@ -2,4 +2,113 @@ import { Meta } from '@storybook/addon-docs/blocks'; <Meta title="Accessibility guides/Semantic HTML and ARIA" /> -# Semantic HTML and ARIA +# Semantic HTML, ARIA, and cross-root accessibility + +This guide explains how to think about **semantic HTML** and **WAI-ARIA** when building or consuming Spectrum Web Components. It also covers **cross-root ARIA** limitations in shadow DOM and why they matter for custom elements. + +## Semantics and HTML + +### What semantic HTML means + +**Semantic HTML** uses elements whose built-in meaning matches the purpose of the content. Browsers, search engines, and assistive technologies can use that meaning without extra hints. Examples include `button` for an action, `a` for navigation, `main` for primary content, and heading elements (`h1`–`h6`) for document structure. + +### Why prefer semantic elements + +Native HTML elements carry **roles**, **keyboard behavior**, and **state** that assistive technologies already understand. They tend to be more robust, require less custom code, and age better as platforms improve. Starting with the right element reduces the need for ARIA and lowers the risk of incorrect or incomplete accessibility implementations. + +### Semantic vs non-semantic examples + +**Prefer** elements whose name matches the job: + +```html +<button type="button">Save</button> +<a href="/docs">Read the documentation</a> +<label for="email">Email</label> +<input id="email" type="email" autocomplete="email" /> +``` + +**Avoid** generic elements when a native one exists: + +```html +<!-- Avoid: div styled as a button --> +<div class="button" onclick="save()">Save</div> + +<!-- Avoid: span acting as a link without href semantics --> +<span class="link" onclick="go()">Read the documentation</span> +``` + +If you must use a non-interactive wrapper for layout, keep **real** controls as `button`, `a`, or form elements inside it. + +### How semantics help assistive technologies + +Screen readers and other assistive technologies expose an **accessibility tree** derived from the DOM. Semantic elements map to familiar roles and names (for example, a `button` is announced as a button; a labelled text field exposes its label association). Headings define an **outline** users can navigate by. Landmark regions (`main`, `nav`, `header`, and similar) help users jump to the right part of the page. See [Understanding success criterion 1.3.1: info and relationships](https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html) in WCAG 2.2 for why programmatic relationships and structure matter. + +## ARIA as a secondary method + +### What ARIA is + +**WAI-ARIA** (Accessible Rich Internet Applications) is a set of attributes that refine or expose accessibility information in the accessibility tree—roles, states, properties, and relationships between nodes. The formal rules live in [WAI-ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/). Patterns for common widgets are described in the [ARIA authoring practices guide (APG)](https://www.w3.org/WAI/ARIA/apg/). + +### When to use ARIA + +Use ARIA **only when native HTML cannot express the needed role, state, or relationship**. + +### Appropriate ARIA examples + +- **`aria-expanded`**, **`aria-controls`**: on a disclosure or menu button when you need to expose open/closed state and related content (often **in addition** to a native `button`). +- **`aria-live`** regions: for status messages that update without moving focus, when no native element conveys the update. +- **`aria-invalid`** and **`aria-describedby`**: tying validation messages to fields when the relationships are not already clear from native labelling. + +### Patterns to avoid + +- **`role="button"`** on a `div` instead of a real `button`—you lose native keyboard activation and many platform behaviors unless you reimplement them completely. +- **Redundant ARIA** on elements that already imply the role (for example, `role="button"` on a `button`). +- **Large `aria-label` values** that duplicate visible text; prefer visible labels and `aria-labelledby` or native `<label>` when possible. See [MDN: ARIA labels](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-label) and the APG [read me first](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) for naming guidance. + +### Custom elements and the host node + +Custom elements such as `<swc-*>` are often **not** mapped to a specific HTML role on the host. Components in this library typically project **native** controls inside shadow DOM or expose appropriate ARIA on the host where the implementation supports it. When authoring features, prefer **delegating** to native elements inside the shadow tree and documenting required light-DOM structure (labels, headings) for consumers. + +## Cross-root ARIA challenges + +### The problem + +Many ARIA attributes express **relationships by ID**—for example, `aria-labelledby`, `aria-describedby`, and `aria-controls` reference other elements by `id`. **Shadow DOM** scopes `id` values to a single shadow tree. References do not cross from light DOM into a shadow root, or from one shadow root to another, in the same way as within a single tree. That breaks patterns that work in flat HTML, such as a label in the page referencing an input inside a component’s shadow tree, or two separate components referencing each other’s internal nodes. + +This tension between encapsulation and accessibility relationships is explained in [How shadow DOM and accessibility are in conflict](https://blogs.igalia.com/alice/how-shadow-dom-and-accessibility-are-in-conflict/) (Alice Boxhall) and [Shadow DOM and accessibility: the trouble with ARIA](https://nolanlawson.com/2022/11/28/shadow-dom-and-accessibility-the-trouble-with-aria/) (Nolan Lawson). + +### Cross-root ARIA delegation (emerging) + +**Cross-root ARIA delegation** is a proposed direction that would let authors delegate selected ARIA attributes from a custom element host to nodes inside its shadow tree (similar in spirit to `delegatesFocus`). [Leo Balter](https://github.com/leobalter) maintains an explainer and draft ideas in the [cross-root ARIA delegation repository](https://github.com/leobalter/cross-root-aria-delegation) and [hosted explainer](https://leobalter.github.io/cross-root-aria-delegation/). + +**Reference target** (below) is a related, more narrowly scoped proposal for forwarding ID-based references to a single element inside the shadow root. Both remain **forward-looking** until browsers ship them broadly; validate behavior in your target browsers and assistive technology matrix. + +### Reference target (cross-root ARIA) + +**Reference target** lets a shadow root declare which **internal element** should receive **ID-based references** that point at the **host**—for example, a `<label for="…">` in the light DOM targeting a custom element whose shadow tree contains the real `<input>`. The same resolution model is intended to apply to many **ARIA relationship attributes** (such as `aria-labelledby` and `aria-controls`) and other HTML **element reference** attributes, so the host can stand in for an enclosed native control without exposing shadow internals as separate IDs to the page. + +- **Specification and design background**: [Reference target for cross-root ARIA (explainer)](https://github.com/WICG/webcomponents/blob/gh-pages/proposals/reference-target-explainer.md) in the WICG Web Components proposals repository. +- **Implementation tracking**: [Chrome platform status: reference target](https://cr-status.appspot.com/feature/5188237101891584). +- **Overview for authors**: [Reference target: having your encapsulation and eating it too](https://blogs.igalia.com/alice/reference-target-having-your-encapsulation-and-eating-it-too/) (Alice Boxhall). + +Reference target is **not fully supported** in production browsers yet; availability often depends on version and experimental flags. For the **most up-to-date** support tables, use [Can I use… `shadowrootreferencetarget` on `<template>`](https://caniuse.com/mdn-html_elements_template_shadowrootreferencetarget) rather than relying on a fixed snapshot in this doc. + +### Impact on web component accessibility + +Until cross-root solutions are widely available, teams often: + +- **Duplicate or mirror** accessible names (for example, `aria-label` on the host when internal labelling cannot reference external nodes). +- **Slot** labelling elements or use **light DOM** for parts that must participate in ID references. +- **Restructure** UIs so relationships stay within one tree (host + same shadow root). + +These workarounds can be fragile or verbose. Documenting **what consumers must provide** (visible text, `for`/`id` pairs in light DOM, heading structure) is part of shipping accessible components. + +## Further reading + +- [Using ARIA](https://www.w3.org/TR/using-aria/) — including the [first rule of ARIA use](https://www.w3.org/TR/using-aria/#rule1). +- [ARIA authoring practices guide](https://www.w3.org/WAI/ARIA/apg/) — patterns and keyboard models for composite widgets. +- [MDN: semantics in HTML](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#semantics_in_html) — glossary entry tying semantics to accessibility. +- [Cross-root ARIA delegation (explainer)](https://leobalter.github.io/cross-root-aria-delegation/) and [repository](https://github.com/leobalter/cross-root-aria-delegation). +- [Reference target for cross-root ARIA (WICG explainer)](https://github.com/WICG/webcomponents/blob/gh-pages/proposals/reference-target-explainer.md); [Can I use… `shadowrootreferencetarget`](https://caniuse.com/mdn-html_elements_template_shadowrootreferencetarget) for current support. +- [How shadow DOM and accessibility are in conflict](https://blogs.igalia.com/alice/how-shadow-dom-and-accessibility-are-in-conflict/) — Alice Boxhall. +- [Shadow DOM and accessibility: the trouble with ARIA](https://nolanlawson.com/2022/11/28/shadow-dom-and-accessibility-the-trouble-with-aria/) — Nolan Lawson. diff --git a/2nd-gen/packages/swc/.storybook/main.ts b/2nd-gen/packages/swc/.storybook/main.ts index 12e4fbf7ea1..fe7b290f655 100644 --- a/2nd-gen/packages/swc/.storybook/main.ts +++ b/2nd-gen/packages/swc/.storybook/main.ts @@ -50,6 +50,16 @@ const stories: StorybookConfig['stories'] = [ : '**/*.stories.ts', titlePrefix: 'Components', }, + { + directory: '../patterns', + files: '**/*.stories.ts', + titlePrefix: 'Patterns', + }, + { + directory: '../patterns', + files: '**/*.mdx', + titlePrefix: 'Patterns', + }, ]; /** @@ -67,6 +77,11 @@ if (storybookMode !== 'ci-a11y') { directory: 'guides', files: '**/!(*documentation).mdx', titlePrefix: 'Guides', + }, + { + directory: 'contributor-docs', + files: '**/*.mdx', + titlePrefix: 'Contributor docs', } ); } @@ -114,6 +129,7 @@ const config: StorybookConfig = { core: { disableTelemetry: true, }, + staticDirs: ['../public'], addons, experimental_indexers: storybookMode === 'dev' ? [testStoryIndexer] : [], viteFinal: async (config) => { diff --git a/2nd-gen/packages/swc/.storybook/preview.ts b/2nd-gen/packages/swc/.storybook/preview.ts index 16138ca57cd..21043a5a870 100644 --- a/2nd-gen/packages/swc/.storybook/preview.ts +++ b/2nd-gen/packages/swc/.storybook/preview.ts @@ -23,6 +23,7 @@ import { withLanguageWrapper } from './decorators/language.js'; import { withStaticColorPlayground } from './decorators/static-color-playground.js'; import DocumentTemplate from './DocumentTemplate.mdx'; import { FontLoader } from './loaders/font-loader.js'; +import { transformDocsSource } from './utils/docs-source-transform.js'; import '../stylesheets/swc.css'; import '../stylesheets/typography.css'; @@ -181,32 +182,7 @@ const preview = { excludeDecorators: true, type: 'auto', language: 'html', - transform: async (source: string) => { - try { - const prettier = await import('prettier/standalone'); - const prettierPluginHtml = await import('prettier/plugins/html'); - const prettierPluginBabel = await import('prettier/plugins/babel'); - const prettierPluginEstree = - await import('prettier/plugins/estree'); - - return prettier.format(source, { - parser: 'html', - plugins: [ - prettierPluginHtml.default, - prettierPluginBabel.default, - prettierPluginEstree.default, - ], - tabWidth: 2, - useTabs: false, - singleQuote: true, - printWidth: 80, - }); - } catch (error) { - // If formatting fails, return the original source - console.error('Failed to format source code:', error); - return source; - } - }, + transform: transformDocsSource, }, }, options: { @@ -216,6 +192,8 @@ const preview = { 'Learn about SWC', ['Overview', 'When to use SWC', '1st-gen vs 2nd-gen'], 'Components', + 'Patterns', + ['Conversational AI', ['README', 'Prompt field', 'User message']], 'Guides', [ 'Accessibility guides', @@ -237,10 +215,206 @@ const preview = { 'Global Element Styling', ], ], + 'Contributor docs', + // GENERATED:CONTRIBUTOR-DOCS-SORT - Do not edit manually. Run `yarn generate:contributor-docs` to update. + [ + 'Contributor documentation', + 'Contributor guides', + [ + 'Getting involved', + 'Using the issue tracker', + 'Working in the SWC repo', + 'Making a pull request', + 'Participating in PR reviews', + 'Releasing SWC', + 'Authoring contributor docs', + 'Patching dependencies', + 'Accessibility testing', + 'Using stackblitz', + '2nd-gen testing', + 'Tools vs packages', + ], + 'Style guide', + [ + 'CSS', + [ + 'Component CSS', + 'Custom properties', + 'Component CSS PR checklist', + 'Spectrum SWC migration', + 'Anti patterns', + 'Property order quick reference', + ], + 'TypeScript', + [ + 'File organization', + 'Class structure', + 'TypeScript modifiers', + 'Lit decorators', + 'Property patterns', + 'Method patterns', + 'JSDoc standards', + 'Component types', + 'Rendering patterns', + 'Naming conventions', + 'Base vs concrete', + 'Composition patterns', + 'Mixin composition', + 'Controller composition', + 'Directive composition', + 'Interface composition', + 'Debug validation', + ], + 'Linting tools', + 'Testing', + [ + 'Testing overview', + 'Storybook testing', + 'Playwright accessbility testing', + 'Visual regresssion testing', + 'Testing utilities', + 'Code coverage', + 'Avoiding flaky tests', + 'Running tests.', + 'PR review checklist', + 'Resources', + ], + ], + 'Project planning', + [ + 'Objectives and strategy', + 'Workstreams', + [ + '2nd gen definition and development', + '2nd gen component migration', + [ + 'Status', + 'Step by step', + [ + 'Analyze rendering and styling', + 'Washing machine workflow', + 'Factor rendering out of 1st gen component', + 'Move base class to 2nd gen core', + 'Formalize spectrum data model', + 'Implement 2nd gen component', + 'Migrate rendering and styles', + 'Add stories for 2nd gen component', + ], + 'Migration project planning', + ], + 'Accessibility improvements', + 'Component improvements', + '1st gen spectrum 2 enhancements', + ], + 'Components', + [ + 'Action button', + ['Rendering and styling migration analysis'], + 'Action group', + ['Rendering and styling migration analysis'], + 'Alert banner', + ['Rendering and styling migration analysis'], + 'Asset', + ['Rendering and styling migration analysis'], + 'Avatar', + [ + 'Accessibility migration analysis', + 'Migration plan', + 'Rendering and styling migration analysis', + ], + 'Badge', + [ + 'Accessibility migration analysis', + 'Rendering and styling migration analysis', + ], + 'Button', + ['Rendering and styling migration analysis'], + 'Button group', + ['Rendering and styling migration analysis'], + 'Checkbox', + ['Rendering and styling migration analysis'], + 'Color field', + ['Rendering and styling migration analysis'], + 'Divider', + [ + 'Accessibility migration analysis', + 'Rendering and styling migration analysis', + ], + 'Dropzone', + ['Rendering and styling migration analysis'], + 'Field group', + ['Rendering and styling migration analysis'], + 'Field label', + ['Rendering and styling migration analysis'], + 'Help text', + ['Rendering and styling migration analysis'], + 'Illustrated message', + ['Rendering and styling migration analysis'], + 'Infield button', + ['Rendering and styling migration analysis'], + 'Infield progress circle', + ['Rendering and styling migration analysis'], + 'Link', + ['Rendering and styling migration analysis'], + 'Meter', + ['Rendering and styling migration analysis'], + 'Number field', + ['Rendering and styling migration analysis'], + 'Opacity checkerboard', + ['Rendering and styling migration analysis'], + 'Picker button', + ['Rendering and styling migration analysis'], + 'Progress bar', + ['Rendering and styling migration analysis'], + 'Progress circle', + [ + 'Accessibility migration analysis', + 'Rendering and styling migration analysis', + ], + 'Radio', + ['Rendering and styling migration analysis'], + 'Search', + ['Rendering and styling migration analysis'], + 'Slider', + ['Rendering and styling migration analysis'], + 'Status light', + [ + 'Accessibility migration analysis', + 'Rendering and styling migration analysis', + ], + 'Swatch', + ['Rendering and styling migration analysis'], + 'Swatch group', + ['Rendering and styling migration analysis'], + 'Switch', + ['Rendering and styling migration analysis'], + 'Tag', + ['Rendering and styling migration analysis'], + 'Tags', + ['Rendering and styling migration analysis'], + 'Textfield', + ['Rendering and styling migration analysis'], + 'Thumbnail', + ['Rendering and styling migration analysis'], + 'Tooltip', + ['Rendering and styling migration analysis'], + ], + 'Milestones', + ], + ], + // GENERATED:CONTRIBUTOR-DOCS-SORT-END ], }, }, }, + // Hide SpectrumElement infrastructure members from every component's API table. + // These are internal properties that consumers should not configure directly. + argTypes: { + dir: { table: { disable: true } }, + VERSION: { table: { disable: true } }, + CORE_VERSION: { table: { disable: true } }, + hasVisibleFocusInTree: { table: { disable: true } }, + }, tags: ['!autodocs', '!dev'], // We only want the playground stories to be visible in the docs and sidenav. Since a majority of our stories are tagged with '!autodocs' and '!dev', we set those tags globally. We can opt in to visibility by adding the 'autodocs' or 'dev' tags to individual stories. loaders: [FontLoader], }; diff --git a/2nd-gen/packages/swc/.storybook/scripts/generate-contributor-docs.mjs b/2nd-gen/packages/swc/.storybook/scripts/generate-contributor-docs.mjs new file mode 100644 index 00000000000..d8fe8ef9d97 --- /dev/null +++ b/2nd-gen/packages/swc/.storybook/scripts/generate-contributor-docs.mjs @@ -0,0 +1,662 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/** + * Generates Storybook-compatible .mdx files from CONTRIBUTOR-DOCS .md files. + * + * Run from the 2nd-gen/packages/swc directory: + * node .storybook/scripts/generate-contributor-docs.mjs + */ + +import { + existsSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + statSync, + writeFileSync, +} from 'fs'; +import { basename, dirname, join, relative, resolve } from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const STORYBOOK_DIR = resolve(__dirname, '..'); +const CONTRIBUTOR_DOCS_DIR = resolve( + STORYBOOK_DIR, + '../../../../CONTRIBUTOR-DOCS' +); +const OUTPUT_DIR = resolve(STORYBOOK_DIR, 'contributor-docs'); +const PREVIEW_FILE = resolve(STORYBOOK_DIR, 'preview.ts'); +const REPO_ROOT = resolve(STORYBOOK_DIR, '../../../..'); +const GITHUB_REPO_URL = + 'https://github.com/adobe/spectrum-web-components/blob/main'; + +// Markers for the auto-generated sort order in preview.ts +const SORT_ORDER_START_MARKER = + '// GENERATED:CONTRIBUTOR-DOCS-SORT - Do not edit manually.'; +const SORT_ORDER_END_MARKER = '// GENERATED:CONTRIBUTOR-DOCS-SORT-END'; + +/** + * Recursively collect all .md files from a directory. + * + * @param {string} dir - Directory to search + * @param {string[]} files - Accumulator for found files + * @returns {string[]} Array of absolute file paths + */ +function collectMarkdownFiles(dir, files = []) { + const entries = readdirSync(dir); + + for (const entry of entries) { + const fullPath = join(dir, entry); + const stat = statSync(fullPath); + + if (stat.isDirectory()) { + collectMarkdownFiles(fullPath, files); + } else if (entry.endsWith('.md')) { + files.push(fullPath); + } + } + + return files; +} + +/** + * Acronyms and terms that should preserve specific capitalization. + */ +const CAPITALIZATION_MAP = { + css: 'CSS', + html: 'HTML', + api: 'API', + swc: 'SWC', + pr: 'PR', + jsdoc: 'JSDoc', + typescript: 'TypeScript', + aria: 'ARIA', + wcag: 'WCAG', + ui: 'UI', + ux: 'UX', + dom: 'DOM', + svg: 'SVG', + json: 'JSON', + url: 'URL', + '1st': '1st', + '2nd': '2nd', + '2ndgen': '2nd-gen', + '1stgen': '1st-gen', +}; + +/** + * Apply proper capitalization to a word, preserving acronyms. + * + * @param {string} word - Word to capitalize + * @returns {string} Properly capitalized word + */ +function capitalizeWord(word) { + const lower = word.toLowerCase(); + if (CAPITALIZATION_MAP[lower]) { + return CAPITALIZATION_MAP[lower]; + } + return word; +} + +/** + * Convert a file path to a human-readable Storybook title. + * Strips numeric prefixes (e.g., "01_") and converts to sentence case, + * preserving acronyms like CSS, HTML, API. + * + * @param {string} filePath - Absolute path to the .md file + * @returns {string} Storybook title (e.g., "Contributor guides/Getting involved") + */ +function pathToTitle(filePath) { + const relativePath = relative(CONTRIBUTOR_DOCS_DIR, filePath); + const parts = relativePath.split('/'); + + const titleParts = parts.map((part, index) => { + const isLast = index === parts.length - 1; + + if (isLast && part === 'README.md') { + return null; + } + + let name = part; + if (isLast) { + name = name.replace(/\.md$/, ''); + } + + name = name.replace(/^\d+_/, ''); + name = name.replace(/[-_]/g, ' '); + + if (name.length > 0) { + const words = name.split(' '); + name = words + .map((word, wordIndex) => { + const capitalized = capitalizeWord(word); + if (capitalized !== word) { + return capitalized; + } + if (wordIndex === 0) { + return word.charAt(0).toUpperCase() + word.slice(1); + } + return word; + }) + .join(' '); + } + + return name; + }); + + const filtered = titleParts.filter(Boolean); + + if (filtered.length === 0) { + return 'Contributor documentation'; + } + + return filtered.join('/'); +} + +/** + * Convert a title to a Storybook doc ID. + * + * @param {string} title - The Storybook title + * @returns {string} The doc ID (e.g., "contributor-docs-contributor-guides-getting-involved--readme") + */ +function titleToDocId(title) { + const fullTitle = title; + const id = fullTitle + .toLowerCase() + .replace(/\//g, '-') + .replace(/\s+/g, '-') + .replace(/[^a-z0-9-]/g, ''); + return `contributor-docs-${id}--readme`; +} + +/** + * Build a map of relative .md paths to their Storybook doc URLs. + * + * @param {string[]} files - Array of absolute file paths + * @returns {Map<string, {title: string, docId: string}>} Map of relative paths to doc info + */ +function buildLinkMap(files) { + const linkMap = new Map(); + + for (const file of files) { + const relativePath = relative(CONTRIBUTOR_DOCS_DIR, file); + const title = pathToTitle(file); + const docId = titleToDocId(title); + linkMap.set(relativePath, { title, docId }); + } + + return linkMap; +} + +/** + * Strip generated breadcrumbs and TOC sections from markdown content. + * + * @param {string} content - Original markdown content + * @returns {string} Content with breadcrumbs and TOC removed + */ +function stripGeneratedSections(content) { + let result = content; + + const breadcrumbStart = '<!-- Generated breadcrumbs - DO NOT EDIT -->'; + const titleMarker = '<!-- Document title (editable) -->'; + + const breadcrumbIdx = result.indexOf(breadcrumbStart); + if (breadcrumbIdx !== -1) { + const titleIdx = result.indexOf(titleMarker, breadcrumbIdx); + if (titleIdx !== -1) { + result = + result.slice(0, breadcrumbIdx) + + result.slice(titleIdx + titleMarker.length); + } + } + + if (result.startsWith(titleMarker)) { + result = result.slice(titleMarker.length); + } + + const tocStart = '<!-- Generated TOC - DO NOT EDIT -->'; + const contentMarker = '<!-- Document content (editable) -->'; + + const tocIdx = result.indexOf(tocStart); + if (tocIdx !== -1) { + const contentIdx = result.indexOf(contentMarker, tocIdx); + if (contentIdx !== -1) { + result = + result.slice(0, tocIdx) + + result.slice(contentIdx + contentMarker.length); + } + } + + result = result.replace(/^\s*\n/, ''); + + return result; +} + +/** + * Convert HTML comments to JSX comments. + * + * @param {string} content - Markdown content + * @returns {string} Content with JSX comments + */ +function convertCommentsToJsx(content) { + return content.replace(/<!--\s*([\s\S]*?)\s*-->/g, '{/* $1 */}'); +} + +/** + * Sanitize HTML elements for MDX compatibility. + * MDX requires self-closing void elements and doesn't allow angle-bracket emails. + * + * @param {string} content - Markdown content + * @returns {string} Sanitized content + */ +function sanitizeHtmlForMdx(content) { + let result = content; + + // Convert angle-bracket emails to markdown links + // e.g., <user@example.com> becomes [user@example.com](mailto:user@example.com) + result = result.replace( + /<([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})>/g, + '[$1](mailto:$1)' + ); + + // Convert void HTML elements to self-closing form for MDX + // <br> -> <br />, <hr> -> <hr />, <img ...> -> <img ... /> + const voidElements = [ + 'br', + 'hr', + 'img', + 'input', + 'meta', + 'link', + 'area', + 'base', + 'col', + 'embed', + 'param', + 'source', + 'track', + 'wbr', + ]; + for (const tag of voidElements) { + // Match <tag> or <tag attr="value"> but not already self-closing <tag /> + const pattern = new RegExp(`<(${tag})(\\s[^>]*)?>(?!\\s*/)`, 'gi'); + result = result.replace(pattern, (match, tagName, attrs) => { + // Check if it's already self-closing + if (match.endsWith('/>')) { + return match; + } + return `<${tagName}${attrs || ''} />`; + }); + } + + return result; +} + +/** + * Source file extensions that should be converted to GitHub links. + */ +const SOURCE_FILE_EXTENSIONS = [ + '.ts', + '.tsx', + '.js', + '.jsx', + '.mjs', + '.cjs', + '.css', + '.scss', + '.json', + '.yaml', + '.yml', +]; + +/** + * Rewrite internal links to appropriate destinations: + * - .md files -> Storybook doc paths + * - Source files (.ts, .js, .css, etc.) -> GitHub URLs + * + * @param {string} content - Markdown content + * @param {string} currentFile - Absolute path of the current file + * @param {Map<string, {title: string, docId: string}>} linkMap - Map of paths to doc info + * @returns {string} Content with rewritten links + */ +function rewriteLinks(content, currentFile, linkMap) { + const currentDir = dirname(currentFile); + + return content.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, href) => { + if ( + href.startsWith('http://') || + href.startsWith('https://') || + href.startsWith('#') + ) { + return match; + } + + let [linkPath, anchor] = href.split('#'); + + // Handle .md files + if (href.includes('.md')) { + const absolutePath = resolve(currentDir, linkPath); + const relativeToDocs = relative(CONTRIBUTOR_DOCS_DIR, absolutePath); + + // If within CONTRIBUTOR-DOCS, convert to Storybook doc path + if (!relativeToDocs.startsWith('..')) { + const docInfo = linkMap.get(relativeToDocs); + if (!docInfo) { + console.warn( + `Warning: Could not resolve link "${href}" in ${relative(CONTRIBUTOR_DOCS_DIR, currentFile)}` + ); + return match; + } + + let storybookUrl = `/docs/${docInfo.docId}`; + if (anchor) { + storybookUrl += `#${anchor}`; + } + + return `[${text}](${storybookUrl})`; + } + + // If outside CONTRIBUTOR-DOCS but within repo, convert to GitHub URL + const relativeToRepo = relative(REPO_ROOT, absolutePath); + if (!relativeToRepo.startsWith('..')) { + let githubUrl = `${GITHUB_REPO_URL}/${relativeToRepo}`; + if (anchor) { + githubUrl += `#${anchor}`; + } + + return `[${text}](${githubUrl})`; + } + + // Outside the repo - leave unchanged + return match; + } + + // Handle source files -> GitHub URLs + const isSourceFile = SOURCE_FILE_EXTENSIONS.some((ext) => + linkPath.endsWith(ext) + ); + if (isSourceFile) { + const absolutePath = resolve(currentDir, linkPath); + const relativeToRepo = relative(REPO_ROOT, absolutePath); + + // Only convert if the path is within the repo (doesn't start with ..) + if (relativeToRepo.startsWith('..')) { + return match; + } + + let githubUrl = `${GITHUB_REPO_URL}/${relativeToRepo}`; + if (anchor) { + githubUrl += `#${anchor}`; + } + + return `[${text}](${githubUrl})`; + } + + return match; + }); +} + +/** + * Convert a single .md file to .mdx format. + * + * @param {string} filePath - Absolute path to the .md file + * @param {Map<string, {title: string, docId: string}>} linkMap - Map of paths to doc info + * @returns {{outputPath: string, content: string}} Output path and converted content + */ +function convertFile(filePath, linkMap) { + const relativePath = relative(CONTRIBUTOR_DOCS_DIR, filePath); + const title = pathToTitle(filePath); + + let content = readFileSync(filePath, 'utf-8'); + + content = stripGeneratedSections(content); + content = rewriteLinks(content, filePath, linkMap); + content = sanitizeHtmlForMdx(content); + content = convertCommentsToJsx(content); + + const mdxContent = `import { Meta } from '@storybook/addon-docs/blocks'; + +<Meta title="${title}" /> + +${content.trim()} +`; + + let outputPath = relativePath.replace(/\.md$/, '.mdx'); + if (basename(outputPath) === 'README.mdx') { + const dir = dirname(outputPath); + if (dir === '.') { + outputPath = 'index.mdx'; + } else { + outputPath = join(dir, 'index.mdx'); + } + } + + return { + outputPath: join(OUTPUT_DIR, outputPath), + content: mdxContent, + }; +} + +/** + * Ensure a directory exists, creating it recursively if needed. + * + * @param {string} dirPath - Directory path + */ +function ensureDir(dirPath) { + if (!existsSync(dirPath)) { + mkdirSync(dirPath, { recursive: true }); + } +} + +/** + * Convert a directory/file name to a display name (stripping numeric prefix). + * + * @param {string} name - File or directory name + * @returns {string} Display name without numeric prefix + */ +function nameToDisplayName(name) { + let displayName = name.replace(/^\d+_/, '').replace(/[-_]/g, ' '); + + if (displayName.length > 0) { + const words = displayName.split(' '); + displayName = words + .map((word, wordIndex) => { + const capitalized = capitalizeWord(word); + if (capitalized !== word) { + return capitalized; + } + if (wordIndex === 0) { + return word.charAt(0).toUpperCase() + word.slice(1); + } + return word; + }) + .join(' '); + } + + return displayName; +} + +/** + * Build a nested sort order array for Storybook's storySort.order. + * Walks the directory tree in sorted order (honoring numeric prefixes) + * but outputs human-readable names. + * + * @param {string} dir - Directory to process + * @returns {Array} Nested array for storySort.order + */ +function buildSortOrder(dir) { + const entries = readdirSync(dir).sort(); + const order = []; + + for (const entry of entries) { + const fullPath = join(dir, entry); + const stat = statSync(fullPath); + + if (stat.isDirectory()) { + const displayName = nameToDisplayName(entry); + const children = buildSortOrder(fullPath); + + if (children.length > 0) { + order.push(displayName, children); + } else { + order.push(displayName); + } + } else if (entry.endsWith('.md')) { + if (entry === 'README.md') { + continue; + } + const baseName = entry.replace(/\.md$/, ''); + const displayName = nameToDisplayName(baseName); + order.push(displayName); + } + } + + return order; +} + +/** + * Format an array as properly indented TypeScript code. + * + * @param {Array} arr - The array to format + * @param {string} baseIndent - The base indentation string + * @param {number} depth - Current nesting depth + * @returns {string} Formatted TypeScript array code + */ +function formatArrayAsCode(arr, baseIndent, depth = 0) { + const indent = baseIndent + ' '.repeat(depth); + const childIndent = baseIndent + ' '.repeat(depth + 1); + + const items = arr.map((item) => { + if (Array.isArray(item)) { + return formatArrayAsCode(item, baseIndent, depth + 1); + } + return `'${item.replace(/'/g, "\\'")}'`; + }); + + if (items.length === 0) { + return '[]'; + } + + // For short arrays with no nested arrays, keep on one line + const hasNestedArrays = arr.some((item) => Array.isArray(item)); + const totalLength = items.join(', ').length; + + if (!hasNestedArrays && totalLength < 60) { + return `[${items.join(', ')}]`; + } + + return `[\n${items.map((item) => `${childIndent}${item}`).join(',\n')},\n${indent}]`; +} + +/** + * Update the sort order in preview.ts between the marker comments. + * + * @param {Array} sortOrder - The generated sort order array + */ +function updatePreviewSortOrder(sortOrder) { + if (!existsSync(PREVIEW_FILE)) { + console.warn(`Warning: preview.ts not found at ${PREVIEW_FILE}`); + return; + } + + const content = readFileSync(PREVIEW_FILE, 'utf-8'); + + const startIdx = content.indexOf(SORT_ORDER_START_MARKER); + const endIdx = content.indexOf(SORT_ORDER_END_MARKER); + + if (startIdx === -1 || endIdx === -1) { + console.warn( + 'Warning: Sort order markers not found in preview.ts. Skipping sort order update.' + ); + console.warn( + 'Add the following markers to preview.ts around the contributor docs sort order:' + ); + console.warn(` ${SORT_ORDER_START_MARKER}`); + console.warn(` ${SORT_ORDER_END_MARKER}`); + return; + } + + // Find the line start for the start marker + const lineStart = content.lastIndexOf('\n', startIdx) + 1; + // Find the line end for the end marker + const lineEnd = content.indexOf('\n', endIdx); + + // Detect indentation from the start marker line + const indentMatch = content.slice(lineStart, startIdx).match(/^(\s*)/); + const indent = indentMatch ? indentMatch[1] : ' '; + + const formattedSortOrder = formatArrayAsCode(sortOrder, indent); + const newContent = + content.slice(0, lineStart) + + `${indent}${SORT_ORDER_START_MARKER} Run \`yarn generate:contributor-docs\` to update.\n` + + `${indent}${formattedSortOrder},\n` + + `${indent}${SORT_ORDER_END_MARKER}` + + content.slice(lineEnd); + + writeFileSync(PREVIEW_FILE, newContent, 'utf-8'); + console.log(`Updated sort order in ${relative(process.cwd(), PREVIEW_FILE)}`); +} + +/** + * Main function to generate all contributor docs. + */ +function main() { + console.log('Generating contributor docs for Storybook...\n'); + + if (!existsSync(CONTRIBUTOR_DOCS_DIR)) { + console.error( + `Error: CONTRIBUTOR-DOCS directory not found at ${CONTRIBUTOR_DOCS_DIR}` + ); + process.exit(1); + } + + if (existsSync(OUTPUT_DIR)) { + rmSync(OUTPUT_DIR, { recursive: true }); + } + + const files = collectMarkdownFiles(CONTRIBUTOR_DOCS_DIR); + console.log(`Found ${files.length} markdown files\n`); + + const linkMap = buildLinkMap(files); + + let converted = 0; + for (const file of files) { + const { outputPath, content } = convertFile(file, linkMap); + + ensureDir(dirname(outputPath)); + writeFileSync(outputPath, content, 'utf-8'); + + const relativeSrc = relative(CONTRIBUTOR_DOCS_DIR, file); + const relativeDest = relative(OUTPUT_DIR, outputPath); + console.log(` ${relativeSrc} -> ${relativeDest}`); + converted++; + } + + console.log( + `\nGenerated ${converted} .mdx files in ${relative(process.cwd(), OUTPUT_DIR)}` + ); + + // Update the sort order in preview.ts + // Structure: ['Contributor documentation', 'Contributor guides', [...], 'Style guide', [...], ...] + // 'Contributor documentation' is the index page, followed by alternating category/children pairs + const sortOrder = [ + 'Contributor documentation', + ...buildSortOrder(CONTRIBUTOR_DOCS_DIR), + ]; + updatePreviewSortOrder(sortOrder); +} + +main(); diff --git a/2nd-gen/packages/swc/.storybook/utils/docs-source-transform.ts b/2nd-gen/packages/swc/.storybook/utils/docs-source-transform.ts new file mode 100644 index 00000000000..f3714a5b903 --- /dev/null +++ b/2nd-gen/packages/swc/.storybook/utils/docs-source-transform.ts @@ -0,0 +1,74 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import type { StoryContext } from '@storybook/web-components'; + +const PATTERN_TITLE_PREFIX = 'Patterns/Conversational AI/'; + +/** + * Format source snippets for Storybook code panel. + * For conversational AI pattern stories, this removes CSF wrapper noise and + * keeps only the `html\`...\`` content when possible. + */ +export async function transformDocsSource( + source: string, + storyContext?: StoryContext +): Promise<string> { + const normalizedSource = shouldNormalizePatternSource(storyContext) + ? extractHtmlTemplate(source) + : source; + + return formatHtml(normalizedSource); +} + +function shouldNormalizePatternSource(storyContext?: StoryContext): boolean { + return storyContext?.title?.startsWith(PATTERN_TITLE_PREFIX) ?? false; +} + +function extractHtmlTemplate(source: string): string { + const primaryMatch = source.match( + /\brender\s*:\s*\([^)]*\)\s*=>\s*html`([\s\S]*?)`\s*[},]/m + ); + if (primaryMatch?.[1]) { + return primaryMatch[1].trim(); + } + + const fallbackMatch = source.match(/\bhtml`([\s\S]*?)`/m); + if (fallbackMatch?.[1]) { + return fallbackMatch[1].trim(); + } + + return source; +} + +async function formatHtml(source: string): Promise<string> { + try { + const prettier = await import('prettier/standalone'); + const prettierPluginHtml = await import('prettier/plugins/html'); + const prettierPluginBabel = await import('prettier/plugins/babel'); + const prettierPluginEstree = await import('prettier/plugins/estree'); + + return prettier.format(source, { + parser: 'html', + plugins: [ + prettierPluginHtml.default, + prettierPluginBabel.default, + prettierPluginEstree.default, + ], + tabWidth: 2, + useTabs: false, + singleQuote: true, + printWidth: 80, + }); + } catch { + return source; + } +} diff --git a/2nd-gen/packages/swc/cem.config.js b/2nd-gen/packages/swc/cem.config.js index 4d5a2c5fe78..dd7e8511eb3 100644 --- a/2nd-gen/packages/swc/cem.config.js +++ b/2nd-gen/packages/swc/cem.config.js @@ -10,9 +10,67 @@ * governing permissions and limitations under the License. */ +/** + * CEM plugin that extracts `@status` and `@since` JSDoc tags from class + * declarations and attaches them to the corresponding CEM declaration. + * + * Usage in component source: + * ```ts + * /** + * * @element swc-my-component + * * @status preview + * * @since 1.0.0 + * *\/ + * export class MyComponent extends … { … } + * ``` + * + * Produces CEM entries with `"status": "preview"` and `"since": "1.0.0"`. + */ +function statusPlugin() { + return { + name: 'cem-plugin-component-status', + analyzePhase({ ts, node, moduleDoc }) { + if (!ts.isClassDeclaration(node)) return; + + const jsDocs = node.jsDoc; + if (!jsDocs?.length) return; + + const jsDoc = jsDocs[jsDocs.length - 1]; + if (!jsDoc.tags) return; + + const className = node.name?.getText(); + if (!className) return; + + const declaration = moduleDoc?.declarations?.find( + (d) => d.name === className + ); + if (!declaration) return; + + for (const tag of jsDoc.tags) { + const tagName = tag.tagName.getText(); + + if (tagName === 'status' || tagName === 'since') { + const value = + typeof tag.comment === 'string' + ? tag.comment.trim() + : tag.comment + ?.map((c) => c.text) + .join('') + .trim(); + + if (value) { + declaration[tagName] = value; + } + } + } + }, + }; +} + export default { globs: [ 'components/**/*.ts', + 'patterns/**/*.ts', '../core/components/**/*.ts', '../core/controllers/**/*.ts', '../core/element/**/*.ts', @@ -23,5 +81,5 @@ export default { outdir: '.storybook', litelement: true, dev: false, - plugins: [], + plugins: [statusPlugin()], }; diff --git a/2nd-gen/packages/swc/components/asset/Asset.ts b/2nd-gen/packages/swc/components/asset/Asset.ts index 68e7b7c4b2e..5a2edbd0bbb 100644 --- a/2nd-gen/packages/swc/components/asset/Asset.ts +++ b/2nd-gen/packages/swc/components/asset/Asset.ts @@ -11,6 +11,7 @@ */ import { CSSResultArray, html, TemplateResult } from 'lit'; +import { choose } from 'lit/directives/choose.js'; import { classMap } from 'lit/directives/class-map.js'; import { AssetBase } from '@spectrum-web-components/core/components/asset'; @@ -19,17 +20,17 @@ import styles from './asset.css'; const file = (label: string): TemplateResult => html` <svg - class="spectrum-Asset-file" + class="swc-Asset-file" role="img" viewBox="0 0 128 128" aria-label=${label || 'File'} > <path - class="spectrum-Asset-fileBackground" + class="swc-Asset-fileBackground" d="M24,126c-5.5,0-10-4.5-10-10V12c0-5.5,4.5-10,10-10h61.5c2.1,0,4.1,0.8,5.6,2.3l20.5,20.4c1.5,1.5,2.4,3.5,2.4,5.7V116c0,5.5-4.5,10-10,10H24z" ></path> <path - class="spectrum-Asset-fileOutline" + class="swc-Asset-fileOutline" d="M113.1,23.3L92.6,2.9C90.7,1,88.2,0,85.5,0H24c-6.6,0-12,5.4-12,12v104c0,6.6,5.4,12,12,12h80c6.6,0,12-5.4,12-12V30.4C116,27.8,114.9,25.2,113.1,23.3z M90,6l20.1,20H92c-1.1,0-2-0.9-2-2V6z M112,116c0,4.4-3.6,8-8,8H24c-4.4,0-8-3.6-8-8V12c0-4.4,3.6-8,8-8h61.5c0.2,0,0.3,0,0.5,0v20c0,3.3,2.7,6,6,6h20c0,0.1,0,0.3,0,0.4V116z" ></path> </svg> @@ -37,17 +38,17 @@ const file = (label: string): TemplateResult => html` const folder = (label: string): TemplateResult => html` <svg - class="spectrum-Asset-folder" + class="swc-Asset-folder" role="img" viewBox="0 0 32 32" aria-label=${label || 'Folder'} > <path - class="spectrum-Asset-folderBackground" + class="swc-Asset-folderBackground" d="M3,29.5c-1.4,0-2.5-1.1-2.5-2.5V5c0-1.4,1.1-2.5,2.5-2.5h10.1c0.5,0,1,0.2,1.4,0.6l3.1,3.1c0.2,0.2,0.4,0.3,0.7,0.3H29c1.4,0,2.5,1.1,2.5,2.5v18c0,1.4-1.1,2.5-2.5,2.5H3z" ></path> <path - class="spectrum-Asset-folderOutline" + class="swc-Asset-folderOutline" d="M29,6H18.3c-0.1,0-0.2,0-0.4-0.2l-3.1-3.1C14.4,2.3,13.8,2,13.1,2H3C1.3,2,0,3.3,0,5v22c0,1.6,1.3,3,3,3h26c1.7,0,3-1.4,3-3V9C32,7.3,30.7,6,29,6z M31,27c0,1.1-0.9,2-2,2H3c-1.1,0-2-0.9-2-2V7h28c1.1,0,2,0.9,2,2V27z" ></path> </svg> @@ -55,11 +56,13 @@ const folder = (label: string): TemplateResult => html` /** * @element swc-asset + * @status preview + * @since 0.0.1 * @slot - content to be displayed when no `variant` is set (typically an `<img>` element) * * @example * <swc-asset> - * <img class="spectrum-Asset-image" src="example.png" alt="Example image" /> + * <img class="swc-Asset-image" src="example.png" alt="Example image" /> * </swc-asset> * * @example @@ -81,16 +84,19 @@ export class Asset extends AssetBase { return html` <div class=${classMap({ - ['spectrum-Asset']: true, + ['swc-Asset']: true, })} > - ${this.variant === 'file' - ? file(this.label) - : this.variant === 'folder' - ? folder(this.label) - : html` - <slot></slot> - `} + ${choose( + this.variant, + [ + ['file', () => file(this.label)], + ['folder', () => folder(this.label)], + ], + () => html` + <slot></slot> + ` + )} </div> `; } diff --git a/2nd-gen/packages/swc/components/asset/asset.css b/2nd-gen/packages/swc/components/asset/asset.css index 6a0cc52b9a2..810db9ee6d9 100644 --- a/2nd-gen/packages/swc/components/asset/asset.css +++ b/2nd-gen/packages/swc/components/asset/asset.css @@ -18,7 +18,7 @@ box-sizing: border-box; } -.spectrum-Asset { +.swc-Asset { display: flex; align-items: center; justify-content: center; @@ -34,22 +34,22 @@ transition: opacity token("animation-duration-100"); } -.spectrum-Asset-folder, -.spectrum-Asset-file { +.swc-Asset-folder, +.swc-Asset-file { inline-size: clamp(48px, 100%, 80px); block-size: 100%; margin: clamp(2px, 10%, 20px); } -.spectrum-Asset-folderBackground { +.swc-Asset-folderBackground { fill: token("gray-200"); } -.spectrum-Asset-fileBackground { +.swc-Asset-fileBackground { fill: light-dark(token("gray-25"), token("gray-200")); } -.spectrum-Asset-folderOutline, -.spectrum-Asset-fileOutline { +.swc-Asset-folderOutline, +.swc-Asset-fileOutline { fill: token("gray-500"); } diff --git a/2nd-gen/packages/swc/components/avatar/Avatar.ts b/2nd-gen/packages/swc/components/avatar/Avatar.ts new file mode 100644 index 00000000000..f5ec0efb83c --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/Avatar.ts @@ -0,0 +1,48 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { CSSResultArray, html, TemplateResult } from 'lit'; + +import { AvatarBase } from '@spectrum-web-components/core/components/avatar'; + +import styles from './avatar.css'; + +/** + * A static avatar component that displays a circular user profile image. + * + * Provide `alt` with a description of the person or entity depicted. + * Pass `alt=""` to treat the image as decorative and hide it from assistive + * technology. + * + * @element swc-avatar + * + * @example + * <swc-avatar src="/path/to/image.jpg" alt="Jane Doe"></swc-avatar> + * + * @example + * <swc-avatar src="/path/to/image.jpg" alt=""></swc-avatar> + * + * @example + * <swc-avatar src="/path/to/image.jpg" alt="Jane Doe" outline></swc-avatar> + */ +export class Avatar extends AvatarBase { + public static override get styles(): CSSResultArray { + return [styles]; + } + + protected override render(): TemplateResult { + return html` + <div class="swc-Avatar"> + <img class="swc-Avatar-image" src=${this.src} alt=${this.alt ?? ''} /> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/components/avatar/avatar.css b/2nd-gen/packages/swc/components/avatar/avatar.css new file mode 100644 index 00000000000..69f366039c0 --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/avatar.css @@ -0,0 +1,137 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: inline-block; + place-self: start; + vertical-align: middle; +} + +* { + box-sizing: border-box; +} + +/* ── Size variants ──────────────────────────────────────── */ + +:host([size="50"]) { + --swc-avatar-size: token("avatar-size-50"); +} + +:host([size="75"]) { + --swc-avatar-size: token("avatar-size-75"); +} + +:host([size="100"]) { + --swc-avatar-size: token("avatar-size-100"); +} + +:host([size="200"]) { + --swc-avatar-size: token("avatar-size-200"); +} + +:host([size="300"]) { + --swc-avatar-size: token("avatar-size-300"); +} + +:host([size="400"]) { + --swc-avatar-size: token("avatar-size-400"); +} + +:host([size="500"]) { + --swc-avatar-size: token("avatar-size-500"); +} + +:host([size="600"]) { + --swc-avatar-size: token("avatar-size-600"); +} + +:host([size="700"]) { + --swc-avatar-size: token("avatar-size-700"); +} + +:host([size="800"]) { + --swc-avatar-size: token("avatar-size-800"); +} + +:host([size="900"]) { + --swc-avatar-size: token("avatar-size-900"); +} + +:host([size="1000"]) { + --swc-avatar-size: token("avatar-size-1000"); +} + +:host([size="1100"]) { + --swc-avatar-size: token("avatar-size-1100"); +} + +:host([size="1200"]) { + --swc-avatar-size: token("avatar-size-1200"); +} + +:host([size="1300"]) { + --swc-avatar-size: token("avatar-size-1300"); +} + +:host([size="1400"]) { + --swc-avatar-size: token("avatar-size-1400"); +} + +:host([size="1500"]) { + --swc-avatar-size: token("avatar-size-1500"); +} + +/* ── Layout & shape ─────────────────────────────────────── */ + +.swc-Avatar { + display: inline-block; + inline-size: var(--swc-avatar-size, token("avatar-size-500")); + block-size: var(--swc-avatar-size, token("avatar-size-500")); + border-radius: token("corner-radius-full"); + user-select: none; +} + +/* ── Image ──────────────────────────────────────────────── */ + +.swc-Avatar-image { + display: block; + inline-size: var(--swc-avatar-size, token("avatar-size-500")); + block-size: var(--swc-avatar-size, token("avatar-size-500")); + border-radius: token("corner-radius-full"); + object-fit: cover; +} + +/* ── Stroke outline ─────────────────────────────────────── */ + +/* Default outline width for all sizes */ +:host([outline]) .swc-Avatar-image { + outline: var(--swc-avatar-outline-width, token("avatar-border-width")) solid var(--swc-avatar-outline-color, token("avatar-border-color")); +} + +/* Thicker outline for large sizes >= 1000 (≥ 64 px), matching S2. + No Spectrum 2 token exists for the large-size border width; hardcoded per spec. */ +:host([outline][size="1000"]), +:host([outline][size="1100"]), +:host([outline][size="1200"]), +:host([outline][size="1300"]), +:host([outline][size="1400"]), +:host([outline][size="1500"]) { + --swc-avatar-outline-width: 2px; +} + +/* ── Disabled state ─────────────────────────────────────── */ + +:host([disabled]) .swc-Avatar { + pointer-events: none; + cursor: default; + opacity: var(--swc-avatar-opacity-disabled, token("opacity-disabled")); +} diff --git a/2nd-gen/packages/swc/components/avatar/index.ts b/2nd-gen/packages/swc/components/avatar/index.ts new file mode 100644 index 00000000000..a5d43958e1a --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/index.ts @@ -0,0 +1,22 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { Avatar } from './Avatar.js'; + +export * from './Avatar.js'; +declare global { + interface HTMLElementTagNameMap { + 'swc-avatar': Avatar; + } +} +defineElement('swc-avatar', Avatar); diff --git a/2nd-gen/packages/swc/components/avatar/migration.md b/2nd-gen/packages/swc/components/avatar/migration.md new file mode 100644 index 00000000000..8c8db337278 --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/migration.md @@ -0,0 +1,243 @@ +# Avatar migration guide: `sp-avatar` → `swc-avatar` + +This guide covers everything you need to move from the 1st-gen `sp-avatar` component +(`@spectrum-web-components/avatar`) to the 2nd-gen `swc-avatar` component +(`@adobe/spectrum-wc/avatar`). + +--- + +## Installation + +Remove the 1st-gen package and add the 2nd-gen equivalent: + +```bash +# Remove +yarn remove @spectrum-web-components/avatar + +# Add +yarn add @adobe/spectrum-wc +``` + +Update your imports: + +```ts +// Before +import '@spectrum-web-components/avatar/sp-avatar.js'; + +// After +import '@adobe/spectrum-wc/avatar'; +``` + +--- + +## Quick reference + +| What changed | Before (1st-gen) | After (2nd-gen) | +| --------------------- | ---------------------- | ---------------------------------------------------------------------- | +| Tag name | `sp-avatar` | `swc-avatar` | +| Alt text attribute | `label="Jane Doe"` | `alt="Jane Doe"` | +| Decorative pattern | `is-decorative` | `decorative` | +| Linked variant | `href="..."` supported | Not supported — see [Linked variant removed](#linked-variant-removed) | +| Disabled state | `disabled` supported | `disabled` supported — see [Disabled](#disabled) | +| Default size | `100` (20 px) | `500` (40 px) | +| Available sizes | `50`–`700` | `50`–`1500` | +| CSS custom properties | `--mod-avatar-*` | `--swc-avatar-*` — see [CSS custom properties](#css-custom-properties) | + +--- + +## Breaking changes + +### Tag name + +Find and replace all instances of `sp-avatar` with `swc-avatar` in your templates and HTML. + +```html +<!-- Before --> +<sp-avatar src="/img/user.jpg" label="Jane Doe"></sp-avatar> + +<!-- After --> +<swc-avatar src="/img/user.jpg" alt="Jane Doe"></swc-avatar> +``` + +--- + +### `label` → `alt` + +The `label` attribute has been renamed to `alt`. It maps directly to the `alt` +attribute on the underlying `<img>` element, following standard HTML semantics. + +```html +<!-- Before --> +<sp-avatar src="/img/user.jpg" label="Jane Doe"></sp-avatar> + +<!-- After --> +<swc-avatar src="/img/user.jpg" alt="Jane Doe"></swc-avatar> +``` + +--- + +### `is-decorative` → `decorative` and `alt=""` + +The `is-decorative` attribute has been renamed to `decorative`. +Additionally include `alt=""`. This aligns with standard HTML `<img>` +semantics and lets assistive technology consistently treat the image as +decorative. + +```html +<!-- Before --> +<sp-avatar is-decorative src="/img/user.jpg"></sp-avatar> + +<!-- After --> +<swc-avatar decorative alt="" src="/img/user.jpg"></swc-avatar> +``` + +When `decorative` is set, `swc-avatar` automatically adds `aria-hidden="true"` to the host element, +hiding it entirely from the accessibility tree. Include `alt=""` alongside `decorative` for full +semantic alignment with the HTML `<img>` element. + +--- + +### Linked variant removed + +The `href` attribute and all related link properties (`target`, `rel`, `download`, +`referrerpolicy`, `type`) are not supported in 2nd-gen. The linked avatar variant +is not part of the Spectrum 2 spec. + +```html +<!-- Before --> +<sp-avatar + href="https://example.com/profile" + label="Jane Doe" + src="/img/user.jpg" +></sp-avatar> +``` + +**After:** Wrap `swc-avatar` in a standard `<a>` element. + +```html +<!-- After --> +<a href="https://example.com/profile"> + <swc-avatar alt="Jane Doe" src="/img/user.jpg"></swc-avatar> +</a> +``` + +> **Accessibility:** When wrapping in `<a>`, the `alt` text on `swc-avatar` +> becomes the accessible name of the link. Always provide a meaningful `alt` +> value — `alt=""` (decorative) is not valid on a linked avatar because the link +> would have no accessible name, violating WCAG 2.4.4. + +--- + +### Disabled + +The `disabled` attribute is supported in both 1st-gen and 2nd-gen, but the +behavior differs. In 1st-gen, `disabled` was only meaningful on the linked +variant — it rendered the avatar as a static image without a link. In 2nd-gen, +`disabled` applies to any avatar and renders it at reduced opacity, indicating +the entity is not currently active or available. + +```html +<!-- Before — disabled only had effect on linked avatars --> +<sp-avatar disabled href="..." label="Jane Doe" src="/img/user.jpg"></sp-avatar> + +<!-- After — disabled works on any avatar --> +<swc-avatar disabled alt="Jane Doe" src="/img/user.jpg"></swc-avatar> +``` + +A disabled avatar remains present in the layout and accessible to assistive +technology. It is not hidden from the accessibility tree. + +--- + +### Default size changed + +The default size changed from `100` (20 px) to `500` (40 px) to match the +Spectrum 2 specification. + +If you relied on the implicit default, set `size="100"` explicitly to preserve +the previous appearance: + +```html +<!-- Before: renders at 20 px --> +<sp-avatar label="Jane Doe" src="/img/user.jpg"></sp-avatar> + +<!-- After: same 20 px size, now explicit --> +<swc-avatar alt="Jane Doe" src="/img/user.jpg" size="100"></swc-avatar> +``` + +--- + +### Size scale extended + +The available size values have been extended from `50`–`700` to `50`–`1500`. +Existing sizes are unchanged. Eight new larger sizes have been added: +`800`, `900`, `1000`, `1100`, `1200`, `1300`, `1400`, `1500`. + +--- + +### CSS custom properties + +All `--mod-avatar-*` custom properties have been removed. Replace them with the +explicit 2nd-gen equivalents: + +| Removed (1st-gen) | Replacement (2nd-gen) | +| --------------------------- | ---------------------------- | +| `--mod-avatar-size` | `--swc-avatar-size` | +| `--mod-avatar-border-color` | `--swc-avatar-outline-color` | +| `--mod-avatar-border-width` | `--swc-avatar-outline-width` | + +```css +/* Before */ +sp-avatar { + --mod-avatar-size: 48px; +} + +/* After */ +swc-avatar { + --swc-avatar-size: 48px; +} +``` + +--- + +### Shadow DOM structure + +The internal shadow DOM structure has changed. If you target shadow internals +with `::part()` or `:host` selectors, update them accordingly. + +| 1st-gen | 2nd-gen | +| ------------------------------- | -------------------------------------------------------------- | +| `<img>` directly in shadow root | `<div class="swc-Avatar"><img class="swc-Avatar-image"></div>` | + +> Note: Accessing shadow internals via class selectors (`.swc-Avatar`, +> `.swc-Avatar-image`) is not a public API and may change without notice. Use +> the exposed CSS custom properties instead. + +--- + +## New in 2nd-gen + +### `outline` + +A new `outline` boolean attribute renders a solid outline around the avatar +image to create visual separation from adjacent content. It defaults to `true` +within an Avatar Group. Set it explicitly on a standalone avatar when the image +border color matches the surrounding background. + +```html +<swc-avatar alt="Jane Doe" src="/img/user.jpg" outline></swc-avatar> +``` + +The outline uses `--swc-avatar-outline-width` (currently 1 px) for sizes 50–900 +and a hardcoded 2 px for sizes 1000–1500, matching the Spectrum 2 specification. + +--- + +## Accessibility + +- Always provide `alt` with a meaningful description of the person or entity shown. +- Use `decorative` and `alt=""` only when the person's name already appears in surrounding text. +- Never use `decorative` and `alt=""` on a linked avatar (wrapped in `<a>`). +- `swc-avatar` is not focusable on its own. Keyboard accessibility for linked + avatars is provided by the wrapping `<a>` element. +- A disabled avatar remains accessible — `disabled` only affects visual opacity. diff --git a/2nd-gen/packages/swc/components/avatar/stories/avatar.stories.ts b/2nd-gen/packages/swc/components/avatar/stories/avatar.stories.ts new file mode 100644 index 00000000000..36206b34f25 --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/stories/avatar.stories.ts @@ -0,0 +1,337 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import { Avatar } from '@adobe/spectrum-wc/avatar'; + +import '@adobe/spectrum-wc/avatar'; + +import { AVATAR_VALID_SIZES } from '../../../../core/components/avatar/Avatar.types.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers('swc-avatar'); + +argTypes.size = { + ...argTypes.size, + control: { type: 'select' }, + options: Avatar.VALID_SIZES.map(String), + table: { + category: 'attributes', + defaultValue: { summary: '500' }, + }, +}; + +argTypes.outline = { + ...argTypes.outline, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +argTypes.disabled = { + ...argTypes.disabled, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +argTypes.alt = { + ...argTypes.alt, + description: 'Text description of the avatar image.', + table: { + category: 'attributes', + defaultValue: { summary: 'undefined' }, + }, +}; + +argTypes.decorative = { + ...argTypes.decorative, + description: + 'Marks the avatar as decorative, hiding it from assistive technology.', + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +argTypes.src = { + ...argTypes.src, + table: { + category: 'attributes', + defaultValue: { summary: "''" }, + }, +}; + +/** + * An avatar displays a circular profile image representing a person or entity. + */ +export const meta: Meta = { + title: 'Avatar', + component: 'swc-avatar', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'A circular profile image for identifying a person or entity.', + }, + // @todo Add Figma design link: design: { type: 'figma', url: '<avatar-node-url>' } + // @todo Add Stackblitz link: stackblitz: { url: '<stackblitz-url>' } + flexLayout: 'row-wrap', + }, + tags: ['migrated'], +}; + +export default { + ...meta, + title: 'Avatar', + excludeStories: ['meta'], +} as Meta; + +// ──────────────── +// STORIES +// ──────────────── + +const PLACEHOLDER_SRC = 'https://picsum.photos/id/64/500/500'; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +// alt ?? '' guards against undefined produced by Storybook controls when +// the user clears the alt field. Explicit stories use typed args that are always defined. +export const Playground: Story = { + render: ({ src, alt, size, outline, disabled }) => html` + <div + style=${outline + ? 'padding:16px;background:linear-gradient(to right,rgb(15,23,42),rgb(51,65,85));border-radius:8px;' + : ''} + > + <swc-avatar + src=${src} + alt=${alt ?? ''} + size=${size} + ?outline=${outline} + ?disabled=${disabled} + ></swc-avatar> + </div> + `, + tags: ['autodocs', 'dev'], + args: { + src: PLACEHOLDER_SRC, + alt: 'Jane Doe', + size: '500', + outline: false, + disabled: false, + }, +}; + +// ────────────────────────── +// OVERVIEW STORY +// ────────────────────────── + +export const Overview: Story = { + render: ({ src, alt, size }) => html` + <swc-avatar src=${src} alt=${alt} size=${size}></swc-avatar> + `, + tags: ['overview'], + args: { + src: PLACEHOLDER_SRC, + alt: 'Jane Doe', + size: '500', + }, +}; + +// ────────────────────────── +// ANATOMY STORIES +// ────────────────────────── + +/** + * An avatar consists of: + * + * 1. **Image** — A circular clipped profile photo + * + * ### Content + * + * - `src`: URL of the profile image + * - `alt`: Text description for assistive technology. Pass `alt=""` to mark as decorative. + * - `size`: Numeric size token (50–1500). Defaults to `500` (40 px). + */ +export const Anatomy: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe" size="500"></swc-avatar> + `, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * Avatars come in 17 sizes from 50 to 1500, ranging from 16 px to 104 px. + * Sizes 50–700 match 1st-gen; sizes 800–1500 are new in Spectrum 2. + * + * The default size is `500` (40 px). + */ +export const Sizes: Story = { + render: () => html` + ${AVATAR_VALID_SIZES.map( + (size) => html` + <swc-avatar + src=${PLACEHOLDER_SRC} + alt="Jane Doe, size ${size}" + size=${size} + ></swc-avatar> + ` + )} + `, + parameters: { + flexLayout: 'row-wrap', + 'section-order': 1, + }, + tags: ['options'], +}; + +/** + * Use the `decorative` attribute and `alt=""` to treat the avatar as decorative — + * the image is hidden from assistive technology. + * + * Use this **only when the surrounding context already identifies the person** + * (e.g., their name appears next to the avatar). + */ +export const Decorative: Story = { + render: () => html` + <swc-avatar + src=${PLACEHOLDER_SRC} + alt="" + size="500" + decorative + ></swc-avatar> + Jane Doe + `, + parameters: { 'section-order': 2 }, + tags: ['options'], +}; + +// ────────────────────────────── +// BEHAVIORS STORIES +// ────────────────────────────── + +/** + * An avatar can be placed inside an action button to create a user-triggered + * action tied to a specific person or entity. + * + * @todo Replace `<button>` with `<swc-action-button>` once that component is + * migrated to 2nd-gen. + */ +export const InActionButton: Story = { + render: () => html` + <button + type="button" + style="display:inline-flex;align-items:center;gap:8px;padding:4px 12px;cursor:pointer;" + > + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe" size="100"></swc-avatar> + Jane Doe + </button> + `, + tags: ['behaviors'], +}; + +/** + * Use the `outline` attribute to render a solid outline around the avatar + * image. This is useful when the avatar's image border color matches the + * surrounding background. The outline uses `--swc-avatar-outline-width` + * (currently 1 px) for sizes 50–900 and a hardcoded 2 px for sizes 1000–1500, + * matching the Spectrum 2 specification. Within an Avatar Group, `outline` + * defaults to `true` to visually separate stacked avatars. + */ +export const Outline: Story = { + render: () => html` + <div + style="display:inline-flex;gap:8px;align-items:center;padding:16px;background:linear-gradient(to right,rgb(15,23,42),rgb(51,65,85));border-radius:8px;" + > + <swc-avatar + src=${PLACEHOLDER_SRC} + alt="Jane Doe" + size="500" + outline + ></swc-avatar> + <swc-avatar + src=${PLACEHOLDER_SRC} + alt="Jane Doe" + size="1000" + outline + ></swc-avatar> + </div> + `, + parameters: { 'section-order': 3 }, + tags: ['options'], +}; + +/** + * A disabled avatar indicates that the entity is not currently active or + * available. The avatar remains visible in the layout at reduced opacity, + * communicating that it may become active later. It remains in the + * accessibility tree — `disabled` is purely visual. + */ +export const Disabled: Story = { + render: () => html` + <swc-avatar + src=${PLACEHOLDER_SRC} + alt="Jane Doe" + size="500" + disabled + ></swc-avatar> + `, + parameters: { 'section-order': 4 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORIES +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-avatar>` element implements several accessibility features: + * + * #### Alt text + * + * - Provide a descriptive `alt` value identifying the person or entity depicted + * - Pass `alt=""` and set the `decorative` attribute when the name already appears in context + * + * ### Best practices + * + * - Always set `alt` — omitting it causes some screen readers to announce the image URL + * - Use `alt=""` and `decorative` attribute only when the person is identified by adjacent text + * - Keep alt text short and descriptive: prefer `"Jane Doe"` over `"Profile photo of Jane Doe"` + */ +export const Accessibility: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe" size="500"></swc-avatar> + <swc-avatar src=${PLACEHOLDER_SRC} alt="" size="500"></swc-avatar> + `, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/components/avatar/test/avatar.a11y.spec.ts b/2nd-gen/packages/swc/components/avatar/test/avatar.a11y.spec.ts new file mode 100644 index 00000000000..52477218ea4 --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/test/avatar.a11y.spec.ts @@ -0,0 +1,131 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../utils/a11y-helpers.js'; + +/** + * Accessibility tests for Avatar component (2nd Generation) + * + * ARIA snapshot tests validate the accessibility tree structure. + * aXe WCAG compliance and color contrast validation are run via + * test-storybook (see .storybook/test-runner.ts). Both are included + * in the `test:a11y` command. + */ + +test.describe('Avatar - ARIA Snapshots', () => { + test('should expose img role with alt text for a labeled avatar', async ({ + page, + }) => { + // Use the Anatomy story (explicit html template) rather than Overview + // (template(args)) to avoid a timing issue where wc-toolkit sets `alt` + // as a JS property after first render, leaving the img briefly decorative. + const root = await gotoStory( + page, + 'components-avatar--anatomy', + 'swc-avatar' + ); + await expect(root).toMatchAriaSnapshot(` + - img "Jane Doe" + `); + }); + + test('should hide a decorative avatar from the accessibility tree', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'components-avatar--decorative', + 'swc-avatar' + ); + // Verify aria-hidden is on the host, then confirm the AT tree is empty. + const avatar = root.locator('swc-avatar'); + expect( + await avatar.getAttribute('aria-hidden'), + 'aria-hidden on decorative host' + ).toBe('true'); + // aria-hidden="true" on the host removes the avatar entirely from the AT. + await expect(root.getByRole('img')).toHaveCount(0); + }); + + test('should handle both labeled and decorative avatars in the same story', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'components-avatar--accessibility', + 'swc-avatar' + ); + // The labeled avatar appears; the decorative one is hidden via aria-hidden. + await expect(root).toMatchAriaSnapshot(` + - img "Jane Doe" + `); + }); + + test('should expose correct img role for all size variants', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'components-avatar--sizes', + 'swc-avatar' + ); + await expect(root).toMatchAriaSnapshot(` + - img "Jane Doe, size 50" + - img "Jane Doe, size 75" + - img "Jane Doe, size 100" + - img "Jane Doe, size 200" + - img "Jane Doe, size 300" + - img "Jane Doe, size 400" + - img "Jane Doe, size 500" + - img "Jane Doe, size 600" + - img "Jane Doe, size 700" + - img "Jane Doe, size 800" + - img "Jane Doe, size 900" + - img "Jane Doe, size 1000" + - img "Jane Doe, size 1100" + - img "Jane Doe, size 1200" + - img "Jane Doe, size 1300" + - img "Jane Doe, size 1400" + - img "Jane Doe, size 1500" + `); + }); + + test('should expose correct img role when outline is active', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'components-avatar--outline', + 'swc-avatar' + ); + await expect(root).toMatchAriaSnapshot(` + - img "Jane Doe" + - img "Jane Doe" + `); + }); + + test('should remain in the accessibility tree when disabled', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'components-avatar--disabled', + 'swc-avatar' + ); + // disabled is purely visual (opacity); the avatar stays accessible. + await expect(root).toMatchAriaSnapshot(` + - img "Jane Doe" + `); + }); +}); diff --git a/2nd-gen/packages/swc/components/avatar/test/avatar.test.ts b/2nd-gen/packages/swc/components/avatar/test/avatar.test.ts new file mode 100644 index 00000000000..f8e7647b472 --- /dev/null +++ b/2nd-gen/packages/swc/components/avatar/test/avatar.test.ts @@ -0,0 +1,418 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { html } from 'lit'; +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import { Avatar } from '@adobe/spectrum-wc/avatar'; + +import '@adobe/spectrum-wc/avatar'; + +import { AVATAR_VALID_SIZES } from '../../../../core/components/avatar/Avatar.types.js'; +import { + getComponent, + getComponents, + withWarningSpy, +} from '../../../utils/test-utils.js'; +import { + Decorative, + Disabled, + meta, + Overview, + Sizes, +} from '../stories/avatar.stories.js'; + +const PLACEHOLDER_SRC = 'https://picsum.photos/id/64/500/500'; + +export default { + ...meta, + title: 'Avatar/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('renders expected default property values', async () => { + expect(avatar.src, 'src property').toBe(PLACEHOLDER_SRC); + expect(avatar.alt, 'alt property').toBe('Jane Doe'); + expect(avatar.size, 'size property').toBe(500); + expect(avatar.outline, 'outline property').toBe(false); + expect(avatar.disabled, 'disabled property').toBe(false); + expect(avatar.decorative, 'decorative property').toBe(false); + }); + + await step('size attribute is present after first render', async () => { + expect(avatar.hasAttribute('size'), 'size attribute presence').toBe(true); + expect(avatar.getAttribute('size'), 'size attribute value').toBe('500'); + }); + + await step( + 'aria-hidden is not set when the avatar is not decorative', + async () => { + expect(avatar.hasAttribute('aria-hidden'), 'aria-hidden absence').toBe( + false + ); + } + ); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Properties / Attributes +// ────────────────────────────────────────────────────────────── + +export const SizeAttributeSetByFirstUpdatedTest: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe"></swc-avatar> + `, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step( + 'sets size attribute to default when not passed as attribute', + async () => { + expect(avatar.hasAttribute('size'), 'size attribute present').toBe( + true + ); + expect(avatar.getAttribute('size'), 'size attribute value').toBe('500'); + expect(avatar.size, 'size property value').toBe(500); + } + ); + }, +}; + +export const SizeReflectionTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('reflects size to attribute after mutation', async () => { + avatar.size = 300; + await avatar.updateComplete; + expect(avatar.getAttribute('size'), 'size attribute after mutation').toBe( + '300' + ); + expect(avatar.size, 'size property after mutation').toBe(300); + }); + + await step( + 'does not trigger update when size is set to its current value', + async () => { + // This step exercises the early-return guard in the size setter + // (`if (this._size === validSize) return`). The assertion verifies + // the final state is unchanged; branch coverage is confirmed by the + // coverage tool rather than a behavioral distinction. + const sizeBefore = avatar.size; + avatar.size = sizeBefore; + await avatar.updateComplete; + expect(avatar.size, 'size unchanged after same-value set').toBe( + sizeBefore + ); + } + ); + }, +}; + +export const SizeInvalidFallbackTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step( + 'falls back to default size (500) when given an invalid value', + async () => { + avatar.size = 999 as Avatar['size']; + await avatar.updateComplete; + expect(avatar.size, 'size after invalid value').toBe(500); + expect( + avatar.getAttribute('size'), + 'size attribute after invalid' + ).toBe('500'); + } + ); + }, +}; + +export const AltAriaHiddenTest: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe"></swc-avatar> + `, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('sets aria-hidden on host when decorative is set', async () => { + avatar.decorative = true; + await avatar.updateComplete; + expect( + avatar.hasAttribute('aria-hidden'), + 'aria-hidden when decorative' + ).toBe(true); + expect( + avatar.getAttribute('aria-hidden'), + 'aria-hidden value when decorative' + ).toBe('true'); + }); + + await step( + 'removes aria-hidden from host when decorative is unset', + async () => { + avatar.decorative = false; + await avatar.updateComplete; + expect( + avatar.hasAttribute('aria-hidden'), + 'aria-hidden removed when not decorative' + ).toBe(false); + } + ); + + await step( + 'does not set aria-hidden when only alt is changed to empty string', + async () => { + // aria-hidden is exclusively controlled by the decorative property; + // alt="" alone affects only the <img> alt attribute, not host visibility. + avatar.alt = ''; + await avatar.updateComplete; + expect( + avatar.hasAttribute('aria-hidden'), + 'aria-hidden not set by alt="" alone' + ).toBe(false); + } + ); + }, +}; + +export const OutlineReflectionTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('reflects outline attribute after mutation', async () => { + avatar.outline = true; + await avatar.updateComplete; + expect(avatar.hasAttribute('outline'), 'outline attribute presence').toBe( + true + ); + + avatar.outline = false; + await avatar.updateComplete; + expect(avatar.hasAttribute('outline'), 'outline attribute removed').toBe( + false + ); + }); + + await step( + 'does not toggle aria-hidden when a non-decorative property changes', + async () => { + // alt="Jane Doe" from Overview args — aria-hidden should remain absent + // even after outline changes (covers changes.has("decorative") === false path) + avatar.outline = true; + await avatar.updateComplete; + expect( + avatar.hasAttribute('aria-hidden'), + 'aria-hidden unaffected by outline change' + ).toBe(false); + } + ); + }, +}; + +export const DisabledTest: Story = { + ...Disabled, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('reflects disabled attribute on initial render', async () => { + expect(avatar.disabled, 'disabled property').toBe(true); + expect( + avatar.hasAttribute('disabled'), + 'disabled attribute presence' + ).toBe(true); + }); + + await step('removes disabled attribute after mutation', async () => { + avatar.disabled = false; + await avatar.updateComplete; + expect(avatar.disabled, 'disabled property after removal').toBe(false); + expect( + avatar.hasAttribute('disabled'), + 'disabled attribute removed' + ).toBe(false); + }); + + await step('re-applies disabled attribute after re-enabling', async () => { + avatar.disabled = true; + await avatar.updateComplete; + expect( + avatar.hasAttribute('disabled'), + 'disabled attribute re-applied' + ).toBe(true); + }); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Variants / States +// ────────────────────────────────────────────────────────────── + +export const SizesTest: Story = { + ...Sizes, + play: async ({ canvasElement, step }) => { + const avatars = await getComponents<Avatar>(canvasElement, 'swc-avatar'); + + await step('renders all valid sizes', async () => { + expect( + avatars.length, + 'number of avatars matching AVATAR_VALID_SIZES' + ).toBe(AVATAR_VALID_SIZES.length); + + for (const size of AVATAR_VALID_SIZES) { + const avatar = canvasElement.querySelector( + `swc-avatar[size="${size}"]` + ) as Avatar | null; + expect(avatar, `avatar with size=${size} exists`).toBeTruthy(); + await avatar?.updateComplete; + expect(avatar?.size, `size property for size=${size}`).toBe(size); + } + }); + }, +}; + +export const DecorativeTest: Story = { + ...Decorative, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('sets aria-hidden on host when decorative is set', async () => { + expect(avatar.alt, 'alt property for decorative').toBe(''); + expect( + avatar.hasAttribute('aria-hidden'), + 'aria-hidden on decorative avatar' + ).toBe(true); + expect( + avatar.getAttribute('aria-hidden'), + 'aria-hidden value on decorative avatar' + ).toBe('true'); + }); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Dev mode warnings +// ────────────────────────────────────────────────────────────── + +export const MissingAltWarningOnFirstRenderTest: Story = { + render: () => html` + <div id="avatar-warning-container"></div> + `, + play: async ({ canvasElement, step }) => { + await step( + 'warns when alt is absent and avatar is not marked decorative on first render', + () => + withWarningSpy(async (warnCalls) => { + const container = canvasElement.querySelector( + '#avatar-warning-container' + )!; + const avatar = document.createElement('swc-avatar') as Avatar; + avatar.src = PLACEHOLDER_SRC; + container.appendChild(avatar); + await avatar.updateComplete; + + expect( + warnCalls.length, + 'warning count for missing alt' + ).toBeGreaterThan(0); + expect( + String(warnCalls[0]?.[1] ?? ''), + 'warning message content' + ).toContain('alt'); + + container.removeChild(avatar); + }) + ); + }, +}; + +export const MissingAltWarningOnUpdateTest: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt="Jane Doe"></swc-avatar> + `, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step( + 'warns when alt is changed to undefined and avatar is not decorative', + () => + withWarningSpy(async (warnCalls) => { + avatar.alt = undefined; + await avatar.updateComplete; + + expect( + warnCalls.length, + 'warning count after alt set to undefined' + ).toBeGreaterThan(0); + expect( + String(warnCalls[0]?.[1] ?? ''), + 'warning message content' + ).toContain('alt'); + }) + ); + }, +}; + +export const AltProvidedNoWarningTest: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC} alt=""></swc-avatar> + `, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('does not warn when a non-empty alt is provided', () => + withWarningSpy(async (warnCalls) => { + avatar.alt = 'Jane Doe'; + await avatar.updateComplete; + + expect(warnCalls.length, 'warning count when alt is provided').toBe(0); + }) + ); + }, +}; + +export const DecorativeNoWarningTest: Story = { + render: () => html` + <swc-avatar src=${PLACEHOLDER_SRC}></swc-avatar> + `, + play: async ({ canvasElement, step }) => { + const avatar = await getComponent<Avatar>(canvasElement, 'swc-avatar'); + + await step('does not warn when decorative is set', () => + withWarningSpy(async (warnCalls) => { + avatar.decorative = true; + await avatar.updateComplete; + + expect(warnCalls.length, 'warning count when decorative is set').toBe( + 0 + ); + }) + ); + }, +}; diff --git a/2nd-gen/packages/swc/components/badge/Badge.ts b/2nd-gen/packages/swc/components/badge/Badge.ts index 286b62ccb9d..933a97f94d6 100644 --- a/2nd-gen/packages/swc/components/badge/Badge.ts +++ b/2nd-gen/packages/swc/components/badge/Badge.ts @@ -17,10 +17,10 @@ import { when } from 'lit/directives/when.js'; import { BADGE_VALID_SIZES, - BADGE_VARIANTS_COLOR_S2, - BADGE_VARIANTS_S2, + BADGE_VARIANTS, + BADGE_VARIANTS_COLOR, BadgeBase, - type BadgeVariantS2 as BadgeVariant, + type BadgeVariant, } from '@spectrum-web-components/core/components/badge'; import styles from './badge.css'; @@ -30,6 +30,8 @@ import styles from './badge.css'; * Badges are typically used to indicate status, categories, or provide supplementary information. * * @element swc-badge + * @status preview + * @since 0.0.1 * * @example * <swc-badge variant="positive">New</swc-badge> @@ -48,12 +50,12 @@ export class Badge extends BadgeBase { /** * @internal */ - static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR_S2; + static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; /** * @internal */ - static override readonly VARIANTS = BADGE_VARIANTS_S2; + static override readonly VARIANTS = BADGE_VARIANTS; /** * @internal diff --git a/2nd-gen/packages/swc/components/badge/stories/badge.stories.ts b/2nd-gen/packages/swc/components/badge/stories/badge.stories.ts index 8e8a730062d..66217a399dc 100644 --- a/2nd-gen/packages/swc/components/badge/stories/badge.stories.ts +++ b/2nd-gen/packages/swc/components/badge/stories/badge.stories.ts @@ -20,10 +20,10 @@ import '@adobe/spectrum-wc/badge'; import { BADGE_VALID_SIZES, - BADGE_VARIANTS_COLOR_S2, - BADGE_VARIANTS_S2, + BADGE_VARIANTS, + BADGE_VARIANTS_COLOR, BADGE_VARIANTS_SEMANTIC, - type BadgeColorVariantS2, + type BadgeColorVariant, type BadgeSemanticVariant, type BadgeSize, FIXED_VALUES, @@ -148,7 +148,7 @@ const nonSemanticLabels = { brown: 'Facilities', cinnamon: 'Compliance', silver: 'Version 1.2.10', -} as const satisfies Record<BadgeColorVariantS2, string>; +} as const satisfies Record<BadgeColorVariant, string>; const allVariantsLabels = { ...semanticLabels, ...nonSemanticLabels }; @@ -295,7 +295,7 @@ SemanticVariants.storyName = 'Semantic variants'; */ export const NonSemanticVariants: Story = { render: (args) => html` - ${BADGE_VARIANTS_COLOR_S2.map((variant) => + ${BADGE_VARIANTS_COLOR.map((variant) => template({ ...args, variant, @@ -341,7 +341,7 @@ export const Outline: Story = { */ export const Subtle: Story = { render: (args) => html` - ${BADGE_VARIANTS_S2.map((variant) => + ${BADGE_VARIANTS.map((variant) => template({ ...args, variant, diff --git a/2nd-gen/packages/swc/components/badge/test/badge.test.ts b/2nd-gen/packages/swc/components/badge/test/badge.test.ts index 87a8411e12f..50c7cfefc7b 100644 --- a/2nd-gen/packages/swc/components/badge/test/badge.test.ts +++ b/2nd-gen/packages/swc/components/badge/test/badge.test.ts @@ -19,8 +19,8 @@ import '@adobe/spectrum-wc/badge'; import { BADGE_VALID_SIZES, - BADGE_VARIANTS_COLOR_S2, - BADGE_VARIANTS_S2, + BADGE_VARIANTS, + BADGE_VARIANTS_COLOR, BADGE_VARIANTS_SEMANTIC, FIXED_VALUES, } from '../../../../core/components/badge/Badge.types.js'; @@ -206,7 +206,7 @@ export const SubtleTest: Story = { ...Subtle, play: async ({ canvasElement, step }) => { await step('reflects subtle attribute on all variants', async () => { - for (const variant of BADGE_VARIANTS_S2) { + for (const variant of BADGE_VARIANTS) { const badge = canvasElement.querySelector( `swc-badge[variant="${variant}"]` ) as Badge; @@ -237,7 +237,7 @@ export const NonSemanticVariantsTest: Story = { play: async ({ canvasElement, step }) => { await step('renders all color variant values', async () => { await Promise.all( - BADGE_VARIANTS_COLOR_S2.map(async (variant) => { + BADGE_VARIANTS_COLOR.map(async (variant) => { const badge = canvasElement.querySelector( `swc-badge[variant="${variant}"]` ) as Badge; diff --git a/2nd-gen/packages/swc/components/divider/Divider.ts b/2nd-gen/packages/swc/components/divider/Divider.ts index 603ba8a4383..75cc6ca95ec 100644 --- a/2nd-gen/packages/swc/components/divider/Divider.ts +++ b/2nd-gen/packages/swc/components/divider/Divider.ts @@ -20,13 +20,17 @@ import styles from './divider.css'; /** * @element swc-divider + * @status preview + * @since 0.0.1 */ export class Divider extends DividerBase { - // ──────────────────── + // ────────────────────────────── // RENDERING & STYLING - // ──────────────────── + // ────────────────────────────── - public static override styles: CSSResultArray = [styles]; + public static override get styles(): CSSResultArray { + return [styles]; + } protected override render(): TemplateResult { return html` diff --git a/2nd-gen/packages/swc/components/icon/Icon.ts b/2nd-gen/packages/swc/components/icon/Icon.ts index 82568fc54a5..0a3806f7e2f 100644 --- a/2nd-gen/packages/swc/components/icon/Icon.ts +++ b/2nd-gen/packages/swc/components/icon/Icon.ts @@ -19,6 +19,8 @@ import styles from './icon.css'; * Minimal icon renderer that accepts slotted SVG markup. * * @element swc-icon + * @status internal + * @since 0.0.1 * * @example * <swc-icon label="Search"> diff --git a/2nd-gen/packages/swc/components/progress-circle/ProgressCircle.ts b/2nd-gen/packages/swc/components/progress-circle/ProgressCircle.ts index fabc130cd26..fbf9154baaf 100644 --- a/2nd-gen/packages/swc/components/progress-circle/ProgressCircle.ts +++ b/2nd-gen/packages/swc/components/progress-circle/ProgressCircle.ts @@ -21,13 +21,15 @@ import { } from '@spectrum-web-components/core/components/progress-circle'; import { capitalize } from '@spectrum-web-components/core/utils/index.js'; -import progressCircleStyles from './progress-circle.css'; +import styles from './progress-circle.css'; /** * Progress circles show the progression of a system operation such as downloading, uploading, processing, etc. in a visual way. * They can represent determinate (with a specific progress value) or indeterminate (loading) progress. * * @element swc-progress-circle + * @status preview + * @since 0.0.1 * * @property {string} static-color - Static color variant for use on different backgrounds. * @property {number} progress - Progress value between 0 and 100. @@ -66,7 +68,7 @@ export class ProgressCircle extends ProgressCircleBase { // ────────────────────────────── public static override get styles(): CSSResultArray { - return [progressCircleStyles]; + return [styles]; } protected override render(): TemplateResult { diff --git a/2nd-gen/packages/swc/components/status-light/StatusLight.ts b/2nd-gen/packages/swc/components/status-light/StatusLight.ts index 3cc2aa02e73..19ae5157715 100644 --- a/2nd-gen/packages/swc/components/status-light/StatusLight.ts +++ b/2nd-gen/packages/swc/components/status-light/StatusLight.ts @@ -28,11 +28,13 @@ import styles from './status-light.css'; * A status light is a great way to convey semantic meaning and the condition of an entity, such as statuses and categories. It provides visual indicators through colored dots accompanied by descriptive text. * * @element swc-status-light + * @status preview + * @since 0.0.1 * * @example * <swc-status-light variant="positive">Approved</swc-status-light> * - * @example + * @example * <swc-status-light variant="silver">Supported in Edge</swc-status-light> */ export class StatusLight extends StatusLightBase { diff --git a/2nd-gen/packages/swc/debug-storybook.log b/2nd-gen/packages/swc/debug-storybook.log new file mode 100644 index 00000000000..b4df766d753 --- /dev/null +++ b/2nd-gen/packages/swc/debug-storybook.log @@ -0,0 +1,30 @@ +[12:57:32.546] [INFO] storybook v10.2.8 +[12:57:34.255] [DEBUG] Getting package.json info for /Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/packages/swc/package.json... +[12:57:34.345] [INFO] Starting... +[12:57:34.824] [DEBUG] Starting preview.. +[12:57:35.661] [WARN] 🚨 Unable to index ./patterns/conversational-ai/prompt-field/stories/prompt-field.stories.ts: + SyntaxError: Unexpected token, expected "," (132:11) + at constructor (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:12175:21) + at Parser.raise (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:16355:71) + at Parser.unexpected (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:16372:20) + at Parser.expect (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:16580:32) + at Parser.parseObjectLike (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:19573:25) + at Parser.parseExprAtom (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:19302:25) + at Parser.parseExprAtom (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:15099:181) + at Parser.parseExprSubscripts (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:19165:105) + at Parser.parseUpdate (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:19156:57) + at Parser.parseMaybeUnary (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-DQ5I5L6R.js:19141:25) +[12:57:35.665] [ERROR] Failed to build the preview +[12:57:35.665] [ERROR] Error: Unable to index ./patterns/conversational-ai/prompt-field/stories/prompt-field.stories.ts + at _StoryIndexGenerator.getIndexAndStats (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/core-server/index.js:6082:15) + at async _StoryIndexGenerator.getIndex (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/core-server/index.js:6071:13) + at async getOptimizeDeps (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/@storybook/builder-vite/dist/index.js:1862:15) + at async createViteServer (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/@storybook/builder-vite/dist/index.js:1888:19) + at async Module.start (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/@storybook/builder-vite/dist/index.js:1923:17) + at async storybookDevServer (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/core-server/index.js:7207:83) + at async buildOrThrow (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/core-server/index.js:4504:12) + at async buildDevStandalone (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/core-server/index.js:7577:66) + at async withTelemetry (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/_node-chunks/chunk-KIOKJLL5.js:218:12) + at async dev (file:///Users/ttomar/Documents/work/ai-component/spectrum-web-components/2nd-gen/node_modules/storybook/dist/bin/core.js:2734:3) +[12:57:35.666] [WARN] Broken build, fix the error above. +You may need to refresh the browser. \ No newline at end of file diff --git a/2nd-gen/packages/swc/package.json b/2nd-gen/packages/swc/package.json index c70a5a8259f..c8b9155f818 100644 --- a/2nd-gen/packages/swc/package.json +++ b/2nd-gen/packages/swc/package.json @@ -37,6 +37,10 @@ "./global-elements.css": { "default": "./dist/global-elements.css" }, + "./patterns/*/*": { + "types": "./dist/patterns/*/*/index.d.ts", + "import": "./dist/patterns/*/*/index.js" + }, "./utils/*": { "types": "./dist/utils/*.d.ts", "import": "./dist/utils/*.js" @@ -54,8 +58,9 @@ "clean": "rimraf dist", "dev": "vite build --watch", "dev:core": "yarn workspace @spectrum-web-components/core dev", - "storybook": "yarn analyze && storybook dev -p 6006", - "storybook:build": "yarn analyze && storybook build", + "generate:contributor-docs": "node .storybook/scripts/generate-contributor-docs.mjs", + "storybook": "yarn generate:contributor-docs && yarn analyze && storybook dev -p 6006", + "storybook:build": "yarn generate:contributor-docs && yarn analyze && storybook build", "stylesheet:tokens": "swc-tokens --outputType tokens --out ./stylesheets/tokens.css --prefix swc", "stylesheet:typography": "swc-tokens --outputType typography --out ./stylesheets/typography.css --prefix swc", "test": "vitest --run --project storybook", diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/README.mdx b/2nd-gen/packages/swc/patterns/conversational-ai/README.mdx new file mode 100644 index 00000000000..90088d7c6a2 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/README.mdx @@ -0,0 +1,58 @@ +import { Meta, Canvas } from '@storybook/addon-docs/blocks'; +import * as ConversationTurnStories from './conversation-turn/stories/conversation-turn.stories'; + +<Meta title="Conversational AI/README" /> + +# Conversational AI + +A complete set of building blocks for composing AI chat interfaces in 2nd-gen Spectrum Web Components. The pattern covers the full response lifecycle — from user input through AI generation, output, feedback, source attribution, and follow-up suggestions. + +--- + +## Full example + +<Canvas of={ConversationTurnStories.FullPattern} sourceState="none" /> + +--- + +## Components + +| Element | Description | +| --------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `swc-prompt-field` | Text input surface for entering or refining a prompt | +| `swc-conversation-artifact` | Shared artifact primitive with `card` and `media` variants, used in prompt-field and user-message surfaces | +| `swc-conversation-turn` | Column alignment for one participant turn; stack consecutive messages in one turn for grouped spacing | +| `swc-user-message` | User message bubble with slot-inferred copy/card/media layout | +| `swc-system-message` | System reply stack; **default slot** guidance is after the API table on the System message docs page | +| `swc-response-status` | Loading / generation-complete status indicator | +| `swc-message-feedback` | Positive / negative feedback control | +| `swc-message-sources` | Collapsible numbered list of response sources | +| `swc-message-suggestions` | Row of follow-up suggestion chips generated from slotted text items | + +--- + +## Pattern structure + +```text +patterns/ + conversational-ai/ + README.mdx + system-prose-demo.css + conversation-artifact/ + prompt-field/ + user-message/ + response-status/ + message-feedback/ + message-sources/ + message-suggestions/ + conversation-turn/ + system-message/ + utils/ + icons/ +``` + +--- + +## Tokens + +All components resolve styles through `token()` calls that map to `var(--swc-*)` custom properties. No hard-coded colours or sizes — set the standard Spectrum token layer to theme the pattern globally. diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/ConversationArtifact.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/ConversationArtifact.ts new file mode 100644 index 00000000000..e1be0bcb751 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/ConversationArtifact.ts @@ -0,0 +1,232 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property, state } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { CrossIcon, ThreeDotsIcon } from '../utils/icons/index.js'; + +import styles from './conversation-artifact.css'; + +/** + * Shared conversation artifact primitive with card and media variants. + * + * @element swc-conversation-artifact + * + * @slot thumbnail - Shared visual slot for icon/thumbnail/preview media. + * @slot title - Primary text label. + * @slot subtitle - Secondary text label. + * @slot actions - Optional trailing actions. + */ +export class ConversationArtifact extends SpectrumElement { + /** Visual treatment variant for this artifact. */ + @property({ type: String, reflect: true }) + public variant: 'card' | 'media' = 'card'; + + /** When `true`, show a dismiss affordance and emit `swc-artifact-dismiss` on click. */ + @property({ type: Boolean, reflect: true }) + public dismissible = false; + + /** `null` until first slot sync to avoid early false-negative hiding. */ + @state() + private _hideTextMeta: boolean | null = null; + @state() + private _hasActions = false; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _slotHasAssignedContent(slot: HTMLSlotElement | null): boolean { + if (!slot) { + return false; + } + for (const node of slot.assignedNodes({ flatten: true })) { + if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) { + return true; + } + if (node.nodeType === Node.ELEMENT_NODE) { + const el = node as HTMLElement; + if (el.tagName === 'SLOT') { + continue; + } + if (el.textContent?.trim() || el.children.length > 0) { + return true; + } + } + } + return false; + } + + private _syncTextMetaSlots(): void { + const root = this.shadowRoot; + if (!root || this.variant !== 'media') { + this._hideTextMeta = false; + this.removeAttribute('data-preview-only'); + return; + } + + const titleSlot = root.querySelector<HTMLSlotElement>('slot[name="title"]'); + const subtitleSlot = root.querySelector<HTMLSlotElement>( + 'slot[name="subtitle"]' + ); + + const has = + this._slotHasAssignedContent(titleSlot) || + this._slotHasAssignedContent(subtitleSlot); + const hide = !has; + + const prev = this._hideTextMeta; + this._hideTextMeta = hide; + this.toggleAttribute('data-preview-only', hide); + if (prev !== hide) { + this.requestUpdate(); + } + } + + private _syncActionsSlot(): void { + const root = this.shadowRoot; + if (!root) { + return; + } + const actionsSlot = root.querySelector<HTMLSlotElement>( + 'slot[name="actions"]' + ); + this._hasActions = this._slotHasAssignedContent(actionsSlot); + } + + protected override updated(changed: Map<string, unknown>): void { + if (changed.has('variant')) { + this._syncTextMetaSlots(); + } + } + + public override connectedCallback(): void { + super.connectedCallback(); + queueMicrotask(() => this._syncTextMetaSlots()); + } + + protected override firstUpdated(): void { + const root = this.shadowRoot; + if (!root) { + return; + } + + const titleSlot = root.querySelector<HTMLSlotElement>('slot[name="title"]'); + const subtitleSlot = root.querySelector<HTMLSlotElement>( + 'slot[name="subtitle"]' + ); + const actionsSlot = root.querySelector<HTMLSlotElement>( + 'slot[name="actions"]' + ); + titleSlot?.addEventListener('slotchange', () => this._syncTextMetaSlots()); + subtitleSlot?.addEventListener('slotchange', () => + this._syncTextMetaSlots() + ); + actionsSlot?.addEventListener('slotchange', () => this._syncActionsSlot()); + this._syncTextMetaSlots(); + this._syncActionsSlot(); + } + + private _handleDismissClick(): void { + this.dispatchEvent( + new CustomEvent('swc-artifact-dismiss', { + bubbles: true, + composed: true, + detail: { artifact: this }, + }) + ); + } + + protected override render(): TemplateResult { + const isMedia = this.variant === 'media'; + const hideMediaMeta = isMedia && this._hideTextMeta === true; + const showDefaultActions = !this._hasActions && !hideMediaMeta; + + return html` + <div class="swc-ConversationArtifact"> + <button + class="swc-ConversationArtifact-dismiss" + aria-label="Remove attachment" + ?hidden=${!this.dismissible} + @click=${this._handleDismissClick} + > + <swc-icon label="Remove">${CrossIcon()}</swc-icon> + </button> + + <div class="swc-ConversationArtifact-surface"> + <div class="swc-ConversationArtifact-thumbnail"> + <slot name="thumbnail"></slot> + </div> + + ${isMedia + ? html` + <div + class="swc-ConversationArtifact-meta" + ?hidden=${hideMediaMeta} + > + <div class="swc-ConversationArtifact-header"> + <div class="swc-ConversationArtifact-title"> + <slot name="title"></slot> + </div> + <div class="swc-ConversationArtifact-actions"> + <slot name="actions"></slot> + ${showDefaultActions + ? html` + <span + class="swc-ConversationArtifact-default-action" + aria-hidden="true" + > + ${ThreeDotsIcon()} + </span> + ` + : ''} + </div> + </div> + <div class="swc-ConversationArtifact-subtitle"> + <slot name="subtitle"></slot> + </div> + </div> + ` + : html` + <div class="swc-ConversationArtifact-meta"> + <div class="swc-ConversationArtifact-title"> + <slot name="title"></slot> + </div> + <div class="swc-ConversationArtifact-subtitle"> + <slot name="subtitle"></slot> + </div> + </div> + + <div class="swc-ConversationArtifact-actions"> + <slot name="actions"></slot> + ${showDefaultActions + ? html` + <span + class="swc-ConversationArtifact-default-action" + aria-hidden="true" + > + ${ThreeDotsIcon()} + </span> + ` + : ''} + </div> + `} + </div> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/conversation-artifact.css b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/conversation-artifact.css new file mode 100644 index 00000000000..bd0c461471f --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/conversation-artifact.css @@ -0,0 +1,213 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; + position: relative; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-ConversationArtifact-dismiss { + display: flex; + position: absolute; + inset-block-start: -12px; + inset-inline-end: -12px; + z-index: 1; + align-items: center; + justify-content: center; + inline-size: 24px; + block-size: 24px; + padding: 0; + color: token("gray-800"); + background: token("gray-200"); + border: none; + border-radius: 50%; + cursor: pointer; +} + +.swc-ConversationArtifact-dismiss[hidden] { + display: none; +} + +.swc-ConversationArtifact-dismiss:hover { + background: token("gray-300"); +} + +.swc-ConversationArtifact-dismiss swc-icon { + --swc-icon-inline-size: 10px; + --swc-icon-block-size: 10px; +} + +.swc-ConversationArtifact-surface { + display: flex; + background: token("gray-50"); +} + +.swc-ConversationArtifact-meta { + display: flex; + flex-direction: column; + gap: 2px; + min-inline-size: 0; +} + +.swc-ConversationArtifact-meta[hidden] { + display: none; +} + +.swc-ConversationArtifact-title { + font-family: token("sans-serif-font"); + font-size: token("font-size-100"); + font-weight: token("bold-font-weight"); + line-height: 1.3; + color: token("gray-900"); +} + +.swc-ConversationArtifact-subtitle { + font-family: token("sans-serif-font"); + font-size: token("font-size-75"); + font-weight: token("regular-font-weight"); + line-height: 1.5; + color: token("gray-800"); +} + +.swc-ConversationArtifact-actions { + display: flex; + align-items: center; +} + +.swc-ConversationArtifact-actions ::slotted(*) { + display: inline-flex; + align-items: center; +} + +.swc-ConversationArtifact-default-action { + display: inline-flex; + align-items: center; + justify-content: center; + inline-size: 20px; + block-size: 20px; + color: token("gray-800"); +} + +.swc-ConversationArtifact-default-action svg { + inline-size: 20px; + block-size: 20px; +} + +:host([variant="card"]) .swc-ConversationArtifact-surface { + gap: token("spacing-300"); + align-items: center; + min-block-size: 68px; + padding: token("spacing-300"); + border-radius: 12px; +} + +:host([variant="card"]) .swc-ConversationArtifact-thumbnail { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: center; +} + +:host([variant="card"]) .swc-ConversationArtifact-thumbnail ::slotted(*) { + flex-shrink: 0; + inline-size: 32px; + block-size: 32px; + border-radius: token("corner-radius-75"); +} + +:host([variant="card"]) .swc-ConversationArtifact-meta { + flex: 1; + align-items: flex-start; +} + +:host([variant="card"]) .swc-ConversationArtifact-title, +:host([variant="card"]) .swc-ConversationArtifact-subtitle { + inline-size: 100%; + text-align: start; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +:host([variant="media"]) .swc-ConversationArtifact-surface { + flex-direction: column; + gap: token("spacing-100"); +} + +:host([variant="media"]) .swc-ConversationArtifact-thumbnail { + border-radius: token("spacing-200"); + overflow: hidden; +} + +:host([variant="media"]) .swc-ConversationArtifact-thumbnail ::slotted(img) { + display: block; + inline-size: 100%; + block-size: auto; + object-fit: cover; +} + +:host([variant="media"]) .swc-ConversationArtifact-meta { + inline-size: 100%; +} + +:host([variant="media"]) .swc-ConversationArtifact-header { + display: flex; + gap: token("spacing-100"); + align-items: flex-start; + justify-content: space-between; +} + +:host([variant="media"]) .swc-ConversationArtifact-header > div { + min-inline-size: 0; +} + +:host([variant="media"]) .swc-ConversationArtifact-title { + line-height: token("line-height-font-size-100"); +} + +:host([variant="media"]) .swc-ConversationArtifact-subtitle { + line-height: token("line-height-font-size-75"); +} + +/* Preview-only media (no title/subtitle) fills hosts like prompt-field tiles. */ +:host([variant="media"][data-preview-only]) { + inline-size: var(--swc-conversation-artifact-preview-size, 68px); + block-size: var(--swc-conversation-artifact-preview-size, 68px); +} + +:host([variant="media"][data-preview-only]) .swc-ConversationArtifact { + inline-size: 100%; + block-size: 100%; +} + +:host([variant="media"][data-preview-only]) .swc-ConversationArtifact-surface { + gap: 0; + inline-size: 100%; + block-size: 100%; +} + +:host([variant="media"][data-preview-only]) .swc-ConversationArtifact-thumbnail { + inline-size: 100%; + block-size: 100%; +} + +:host([variant="media"][data-preview-only]) .swc-ConversationArtifact-thumbnail ::slotted(*) { + display: block; + inline-size: 100%; + block-size: 100%; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/index.ts new file mode 100644 index 00000000000..6a074156c9c --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { ConversationArtifact } from './ConversationArtifact.js'; + +export * from './ConversationArtifact.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-conversation-artifact': ConversationArtifact; + } +} + +defineElement('swc-conversation-artifact', ConversationArtifact); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/stories/conversation-artifact.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/stories/conversation-artifact.stories.ts new file mode 100644 index 00000000000..b48d78600a3 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-artifact/stories/conversation-artifact.stories.ts @@ -0,0 +1,119 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; + +const { args, argTypes, template } = getStorybookHelpers( + 'swc-conversation-artifact' +); + +argTypes.variant = { + ...argTypes.variant, + control: { type: 'select' }, + options: ['card', 'media'], + table: { + category: 'attributes', + defaultValue: { summary: 'card' }, + }, +}; + +/** + * Shared artifact primitive used across conversational AI surfaces such as prompt field and user message. + * Supports both **`card`** and **`media`** variants with a unified slot model. + */ +const meta: Meta = { + title: 'Conversational AI/Conversation artifact', + component: 'swc-conversation-artifact', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: + 'Shared artifact primitive with card and media variants, plus optional dismiss and trailing actions.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +export const Playground: Story = { + args: { + variant: 'card', + dismissible: false, + 'thumbnail-slot': + '<div slot="thumbnail" style="inline-size:32px;block-size:32px;border-radius:3px;background:var(--swc-gray-200);" role="img" aria-label="File thumbnail"></div>', + 'title-slot': '<span slot="title">Hilton commercial assets</span>', + 'subtitle-slot': '<span slot="subtitle">2026</span>', + }, + tags: ['autodocs', 'dev'], +}; + +export const Overview: Story = { + args: { + variant: 'card', + dismissible: true, + 'thumbnail-slot': + '<div slot="thumbnail" style="inline-size:32px;block-size:32px;border-radius:3px;background:var(--swc-gray-200);" role="img" aria-label="File thumbnail"></div>', + 'title-slot': '<span slot="title">Hilton commercial assets</span>', + 'subtitle-slot': '<span slot="subtitle">2026</span>', + }, + tags: ['overview'], +}; + +/** + * Card variant uses a compact thumbnail with horizontal text layout. + */ +export const Card: Story = { + render: () => html` + <div style="max-inline-size:360px;"> + <swc-conversation-artifact variant="card" dismissible> + <div + slot="thumbnail" + style="inline-size:32px;block-size:32px;border-radius:3px;background:var(--swc-gray-200);" + role="img" + aria-label="File thumbnail" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </div> + `, + tags: ['options'], +}; + +/** + * Media variant uses a larger thumbnail region with metadata below. + */ +export const Media: Story = { + render: () => html` + <div style="inline-size:240px;"> + <swc-conversation-artifact variant="media" dismissible> + <div + slot="thumbnail" + style="inline-size:100%;block-size:196px;background:linear-gradient(135deg,#a78bfa,#f472b6);" + role="img" + aria-label="Campaign preview" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </div> + `, + tags: ['options'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/ConversationTurn.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/ConversationTurn.ts new file mode 100644 index 00000000000..c9b843a241c --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/ConversationTurn.ts @@ -0,0 +1,49 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import styles from './conversation-turn.css'; + +/** + * Aligns one turn in a chat column: outgoing content toward the end (right in LTR) + * and incoming content toward the start at full width. + * + * Slot **`swc-user-message`**, **`swc-system-message`**, or custom markup inside each turn. + * Multiple slotted messages are stacked automatically with + * `--swc-conversation-turn-group-gap` spacing. + * User-message widths are applied by layout context (full screen, split rail, + * panel) while system content remains full width. + * + * @element swc-conversation-turn + * @slot - Turn body (message stack or bubble) + */ +export class ConversationTurn extends SpectrumElement { + /** `outgoing` — end-aligned; `incoming` — start-aligned, full width of the column. */ + @property({ type: String, reflect: true }) + public type: 'incoming' | 'outgoing' = 'outgoing'; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + protected override render(): TemplateResult { + return html` + <div class="swc-ConversationTurn"> + <slot></slot> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/conversation-turn.css b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/conversation-turn.css new file mode 100644 index 00000000000..22ee16f9ac2 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/conversation-turn.css @@ -0,0 +1,62 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; + inline-size: 100%; + container-name: swc-conversation-turn; + container-type: inline-size; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-ConversationTurn { + display: flex; + inline-size: 100%; + min-inline-size: 0; +} + +.swc-ConversationTurn > slot { + display: flex; + flex-direction: column; + gap: var(--swc-conversation-turn-group-gap, 8px); + inline-size: 100%; + min-inline-size: 0; +} + +:host([type='outgoing']) .swc-ConversationTurn { + justify-content: flex-end; +} + +:host([type='outgoing']) .swc-ConversationTurn > slot { + align-items: flex-end; +} + + +:host([type='incoming']) .swc-ConversationTurn { + justify-content: flex-start; +} + +:host([type='incoming']) .swc-ConversationTurn > slot { + align-items: stretch; +} + +/* Let system stacks span the column; user bubbles keep their own max-inline-size. */ +:host([type='incoming']) ::slotted(*) { + flex: 1 1 100%; + min-inline-size: 0; + max-inline-size: 100%; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/index.ts new file mode 100644 index 00000000000..a094531221f --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { ConversationTurn } from './ConversationTurn.js'; + +export * from './ConversationTurn.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-conversation-turn': ConversationTurn; + } +} + +defineElement('swc-conversation-turn', ConversationTurn); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/stories/conversation-turn.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/stories/conversation-turn.stories.ts new file mode 100644 index 00000000000..3eff850bc17 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/stories/conversation-turn.stories.ts @@ -0,0 +1,248 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; +import '../../system-message/index.js'; +import '../../user-message/index.js'; +import '../../conversation-artifact/index.js'; +import '../../prompt-field/index.js'; +import '../../response-status/index.js'; +import '../../message-feedback/index.js'; +import '../../message-sources/index.js'; +import '../../message-suggestions/index.js'; + +import '../../system-prose-demo.css'; + +// ──────────────── +// METADATA +// ──────────────── + +/** + * Column alignment for one chat turn: `type="outgoing"` (end) vs `type="incoming"` (start, full width). + * Slot **`swc-user-message`**, **`swc-system-message`**, or custom markup. + * Stack consecutive messages in one turn to create grouped spacing. + */ +const meta: Meta = { + title: 'Conversational AI/Conversation turn', + component: 'swc-conversation-turn', + parameters: { + docs: { + subtitle: + 'Aligns user vs system content in a thread column and supports grouped message stacking.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + render: () => html` + <div + style="display:flex;flex-direction:column;gap:16px;max-inline-size:600px;" + > + <swc-conversation-turn type="outgoing"> + <swc-user-message> + Short user question for the demo. + </swc-user-message> + </swc-conversation-turn> + <swc-conversation-turn type="incoming"> + <swc-system-message> + <swc-response-status + slot="status" + ></swc-response-status> + <div class="swc-conversationalAi-systemProse"> + <p>System reply body goes here.</p> + </div> + <swc-message-feedback slot="feedback"></swc-message-feedback> + </swc-system-message> + </swc-conversation-turn> + </div> + `, + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + render: () => html` + <div + style="display:flex;flex-direction:column;gap:16px;max-inline-size:600px;" + > + <swc-conversation-turn type="outgoing"> + <swc-user-message> + Can you summarize the attached campaign assets? + </swc-user-message> + </swc-conversation-turn> + <swc-conversation-turn type="incoming"> + <swc-system-message> + <swc-response-status + slot="status" + ></swc-response-status> + <div class="swc-conversationalAi-systemProse"> + <p> + Here is a concise summary based on the files you shared. I grouped + themes by audience and channel. + </p> + </div> + <swc-message-feedback slot="feedback"></swc-message-feedback> + </swc-system-message> + </swc-conversation-turn> + </div> + `, + tags: ['overview'], +}; + +// ────────────────────────────────────────── +// FULL PATTERN STORY +// ────────────────────────────────────────── + +/** + * Product-style column with grouped user content: three consecutive user + * messages are stacked in one turn, followed by one system turn + * (`swc-system-message`) and the **prompt field**. + */ +export const FullPattern: Story = { + render: () => html` + <div + style="display:flex;flex-direction:column;gap:24px;max-width:600px;padding:24px;" + > + <swc-conversation-turn type="outgoing"> + <swc-user-message> + <div style="inline-size:240px;"> + <swc-conversation-artifact variant="media"> + <div + slot="thumbnail" + style="inline-size:100%;block-size:196px;background:linear-gradient(135deg,#6366f1 0%,#a855f7 40%,#ec4899 70%,#f59e0b 100%);" + role="img" + aria-label="Campaign preview" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </div> + </swc-user-message> + <swc-user-message> + <swc-conversation-artifact variant="card"> + <div + slot="thumbnail" + style="inline-size:36px;block-size:36px;border-radius:4px;background:var(--swc-gray-200);flex-shrink:0;" + role="img" + aria-label="File" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </swc-user-message> + <swc-user-message> + Can you help me create a 45-minute presentation, with animations, for + an executive update? + </swc-user-message> + </swc-conversation-turn> + + <swc-conversation-turn type="incoming"> + <swc-system-message> + <swc-response-status + slot="status" + open + > + <span slot="reasoning"> + The user said make a presentation deck but didn't specify duration + of deck. Assumption is a brief presentation. I should check + previous Hilton executive presentation decks and extract the + structure. + </span> + </swc-response-status> + + <div class="swc-conversationalAi-systemProse"> + <p + style="font-size:var(--swc-font-size-400);font-weight:800;line-height:var(--swc-line-height-font-size-400);color:var(--swc-gray-900);margin:0;" + > + Big idea / core narrative: The warmth of welcome + </p> + <p> + Hospitality begins the moment our customers set foot off their + plane. We are more than accommodation, and we service a diverse + base. We hope to be the anchor and bounce board for all who stay + with us. + </p> + <p + style="font-size:var(--swc-font-size-300);font-weight:800;line-height:var(--swc-line-height-font-size-300);color:var(--swc-gray-900);margin:0;" + > + Belonging happens at Hilton + </p> + <p> + We strive to be familiar but exceed expectations. These assets + highlight how belonging is personified. + </p> + <p + style="font-size:var(--swc-font-size-300);font-weight:800;line-height:var(--swc-line-height-font-size-300);color:var(--swc-gray-900);margin:0;" + > + We are more than accommodation + </p> + <ul> + <li>Airport pick up service</li> + <li>Local recommendations</li> + <li>Everyday excursions</li> + <li>Customizable experience</li> + </ul> + </div> + + <swc-message-feedback slot="feedback"></swc-message-feedback> + + <swc-message-sources slot="sources" open> + <li><a href="#">Hilton brand email — Q1 campaign 2026</a></li> + <li><a href="#">Market research — hospitality trends 2025</a></li> + <li><a href="#">User research — loyalty programme survey</a></li> + </swc-message-sources> + + <swc-message-suggestions + slot="suggestions" + title="What would you like to do next?" + > + <span>Create a year-over-year growth chart for the next decade</span> + <span>Generate a congratulatory poster</span> + <span>Summarize development pipeline</span> + </swc-message-suggestions> + </swc-system-message> + </swc-conversation-turn> + + <swc-prompt-field sending> + <swc-conversation-artifact + slot="artifact" + variant="card" + dismissible + > + <div + slot="thumbnail" + style="inline-size:28px;block-size:28px;border-radius:3px;background:var(--swc-gray-200);flex-shrink:0;" + role="img" + aria-label="File" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </swc-prompt-field> + </div> + `, + tags: ['full-pattern'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/test/conversation-turn.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/test/conversation-turn.test.ts new file mode 100644 index 00000000000..30098979ec7 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/conversation-turn/test/conversation-turn.test.ts @@ -0,0 +1,48 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { ConversationTurn } from '../ConversationTurn.js'; +import { meta, Overview } from '../stories/conversation-turn.stories.js'; + +export default { + ...meta, + title: 'Conversational AI/Conversation turn/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const els = canvasElement.querySelectorAll('swc-conversation-turn'); + const first = els[0] as ConversationTurn; + + await step('type reflects on host', async () => { + expect(first.type).toBe('outgoing'); + expect(first.getAttribute('type')).toBe('outgoing'); + }); + + await step('type updates when set', async () => { + first.type = 'incoming'; + await first.updateComplete; + expect(first.getAttribute('type')).toBe('incoming'); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/MessageFeedback.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/MessageFeedback.ts new file mode 100644 index 00000000000..ba6e161e4d7 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/MessageFeedback.ts @@ -0,0 +1,106 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { ThumbDownIcon, ThumbUpIcon } from '../utils/icons/index.js'; + +import styles from './message-feedback.css'; + +/** + * Binary positive / negative feedback control for AI responses. + * + * @element swc-message-feedback + * @fires {CustomEvent} swc-feedback - Dispatched when the user selects positive or negative feedback. + */ +export class MessageFeedback extends SpectrumElement { + /** + * The currently selected feedback status. + * - `positive`: positive feedback selected + * - `negative`: negative feedback selected + * + * This is controlled by the consumer. The component dispatches `swc-feedback` + * on click and expects the parent to update `status`. + */ + @property({ type: String, reflect: true }) + public status?: 'positive' | 'negative'; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _handlePositive(): void { + this.dispatchEvent( + new CustomEvent('swc-feedback', { + bubbles: true, + composed: true, + detail: { status: 'positive' as const }, + }) + ); + } + + private _handleNegative(): void { + this.dispatchEvent( + new CustomEvent('swc-feedback', { + bubbles: true, + composed: true, + detail: { status: 'negative' as const }, + }) + ); + } + + protected override render(): TemplateResult { + return html` + <div + class="swc-MessageFeedback" + role="radiogroup" + aria-label="Response feedback" + > + <button + class="swc-MessageFeedback-button" + role="radio" + ?data-selected=${this.status === 'positive'} + aria-label="Positive response" + aria-checked=${this.status === 'positive'} + @click=${this._handlePositive} + > + <swc-icon + label="Positive response" + style="--swc-icon-inline-size:16px;--swc-icon-block-size:16px;" + > + ${ThumbUpIcon()} + </swc-icon> + </button> + <button + class="swc-MessageFeedback-button" + role="radio" + ?data-selected=${this.status === 'negative'} + aria-label="Negative response" + aria-checked=${this.status === 'negative'} + @click=${this._handleNegative} + > + <swc-icon + label="Negative response" + style="--swc-icon-inline-size:16px;--swc-icon-block-size:16px;" + > + ${ThumbDownIcon()} + </swc-icon> + </button> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/index.ts new file mode 100644 index 00000000000..8b01fe287fc --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { MessageFeedback } from './MessageFeedback.js'; + +export * from './MessageFeedback.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-message-feedback': MessageFeedback; + } +} + +defineElement('swc-message-feedback', MessageFeedback); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/message-feedback.css b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/message-feedback.css new file mode 100644 index 00000000000..088c963ba1f --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/message-feedback.css @@ -0,0 +1,58 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: inline-block; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-MessageFeedback { + display: inline-flex; + gap: 4px; + align-items: center; +} + +.swc-MessageFeedback-button { + display: flex; + align-items: center; + justify-content: center; + inline-size: 28px; + block-size: 28px; + padding: 0; + color: token("gray-700"); + background: transparent; + border: none; + border-radius: 6px; + cursor: pointer; + transition: + background 130ms ease, + color 130ms ease; +} + +.swc-MessageFeedback-button:hover { + color: token("gray-800"); + background: token("gray-100"); +} + +.swc-MessageFeedback-button[data-selected] { + color: token("gray-25"); + background: token("gray-800"); +} + +.swc-MessageFeedback-button[data-selected]:hover { + background: token("gray-700"); +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/stories/message-feedback.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/stories/message-feedback.stories.ts new file mode 100644 index 00000000000..c3cb7285d1e --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/stories/message-feedback.stories.ts @@ -0,0 +1,158 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers( + 'swc-message-feedback' +); + +delete (args as Record<string, unknown>).selection; +delete (argTypes as Record<string, unknown>).selection; + +argTypes.status = { + ...argTypes.status, + control: { type: 'select' }, + options: ['positive', 'negative'], + table: { + category: 'attributes', + defaultValue: { summary: '(unset)' }, + }, +}; + +/** + * Binary positive / negative feedback control placed below an AI response. + * This component is controlled: it emits `swc-feedback`, and consumers set `status`. + */ +const meta: Meta = { + title: 'Conversational AI/Message feedback', + component: 'swc-message-feedback', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'Binary positive / negative feedback control.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + args: {}, + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + args: {}, + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A message feedback control consists of two quiet radio buttons: + * + * 1. **Positive** — "Positive response" + * 2. **Negative** — "Negative response" + * + * The selected button renders with a dark filled background. + */ +export const Anatomy: Story = { + args: {}, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * The `status` attribute controls which button appears selected: + * + * - **Unset** — Neither option selected (default) + * - **`positive`** — Positive feedback selected + * - **`negative`** — Negative feedback selected + */ +export const Status: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:24px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-feedback></swc-message-feedback> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Unset + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-feedback status="positive"></swc-message-feedback> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Positive + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-feedback status="negative"></swc-message-feedback> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Negative + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-message-feedback>` element implements the following accessibility features: + * + * #### Radio buttons + * + * - The group uses `role="radiogroup"` with `aria-label="Response feedback"` + * - Each option uses `role="radio"` with `aria-checked` to communicate selection + * - Each option carries a descriptive label: "Positive response" / "Negative response" + */ +export const Accessibility: Story = { + args: {}, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.a11y.spec.ts new file mode 100644 index 00000000000..3eab95d1d87 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.a11y.spec.ts @@ -0,0 +1,30 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +test.describe('MessageFeedback - ARIA Snapshots', () => { + test('should have correct accessibility tree', async ({ page }) => { + const root = await gotoStory( + page, + 'conversational-ai-message-feedback--overview', + 'swc-message-feedback' + ); + await expect(root).toMatchAriaSnapshot(` + - radiogroup "Response feedback": + - radio "Positive response" [checked=false] + - radio "Negative response" [checked=false] + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.test.ts new file mode 100644 index 00000000000..2d11c30655f --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-feedback/test/message-feedback.test.ts @@ -0,0 +1,103 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, userEvent, within } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { MessageFeedback } from '../MessageFeedback.js'; +import { meta, Overview } from '../stories/message-feedback.stories.js'; + +export default { + ...meta, + title: 'Conversational AI/Message feedback/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<MessageFeedback>( + canvasElement, + 'swc-message-feedback' + ); + + await step('renders with no status by default', async () => { + expect(el.status).toBeUndefined(); + }); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Interaction +// ────────────────────────────────────────────────────────────── + +export const InteractionTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<MessageFeedback>( + canvasElement, + 'swc-message-feedback' + ); + const canvas = within(canvasElement); + + await step('clicking positive emits swc-feedback with positive status', async () => { + const events: Array<string> = []; + el.addEventListener('swc-feedback', ((event: Event) => { + const customEvent = event as CustomEvent<{ status: string }>; + events.push(customEvent.detail.status); + }) as EventListener); + + const positiveRadio = canvas.getByRole('radio', { + name: 'Positive response', + }); + await userEvent.click(positiveRadio); + await el.updateComplete; + expect(events.at(-1)).toBe('positive'); + expect(el.status).toBeUndefined(); + }); + + await step('consumer-controlled status updates selected option', async () => { + el.status = 'positive'; + await el.updateComplete; + const positiveRadio = canvas.getByRole('radio', { + name: 'Positive response', + }); + expect(positiveRadio).toHaveAttribute('aria-checked', 'true'); + }); + + await step('clicking negative emits swc-feedback with negative status', async () => { + const events: Array<string> = []; + el.addEventListener('swc-feedback', ((event: Event) => { + const customEvent = event as CustomEvent<{ status: string }>; + events.push(customEvent.detail.status); + }) as EventListener); + + const negativeRadio = canvas.getByRole('radio', { + name: 'Negative response', + }); + await userEvent.click(negativeRadio); + await el.updateComplete; + expect(events.at(-1)).toBe('negative'); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/MessageSources.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/MessageSources.ts new file mode 100644 index 00000000000..cdb87f41c77 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/MessageSources.ts @@ -0,0 +1,94 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { Chevron75Icon } from '../../../components/icon/elements/index.js'; + +import styles from './message-sources.css'; + +/** + * Collapsible list of sources used to generate an AI response. + * + * Slot source items as `<a>` elements or any inline content inside the default slot. + * Each slotted item will be wrapped with a numbered badge automatically via CSS counters. + * + * @element swc-message-sources + * @slot - Source link items (rendered as a numbered list when expanded) + * @fires swc-sources-toggle - Dispatched when the panel is toggled. Detail: `{ open: boolean }` + */ +export class MessageSources extends SpectrumElement { + /** + * Whether the sources list is open. + */ + @property({ type: Boolean, reflect: true }) + public open = false; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _handleToggle(): void { + this.open = !this.open; + this.dispatchEvent( + new CustomEvent('swc-sources-toggle', { + bubbles: true, + composed: true, + detail: { open: this.open }, + }) + ); + } + + protected override render(): TemplateResult { + const isExpanded = this.open; + + return html` + <div class="swc-MessageSources"> + <button + class="swc-MessageSources-toggle" + aria-expanded=${isExpanded} + aria-controls="swc-sources-panel" + @click=${this._handleToggle} + > + <swc-icon + class=${isExpanded + ? 'swc-MessageSources-chevron swc-MessageSources-chevron--down' + : 'swc-MessageSources-chevron'} + style="--swc-icon-inline-size:10px;--swc-icon-block-size:10px;" + label=${isExpanded ? 'Collapse sources' : 'Expand sources'} + > + ${Chevron75Icon()} + </swc-icon> + Sources + </button> + + ${isExpanded + ? html` + <ol + id="swc-sources-panel" + class="swc-MessageSources-list" + role="list" + aria-label="Sources" + > + <slot></slot> + </ol> + ` + : ''} + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/index.ts new file mode 100644 index 00000000000..47b1187f549 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { MessageSources } from './MessageSources.js'; + +export * from './MessageSources.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-message-sources': MessageSources; + } +} + +defineElement('swc-message-sources', MessageSources); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/message-sources.css b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/message-sources.css new file mode 100644 index 00000000000..94e64f4df1c --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/message-sources.css @@ -0,0 +1,105 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; +} + +:host ::slotted(a) { + color: token("gray-800"); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-MessageSources { + display: flex; + flex-direction: column; + gap: 8px; +} + +/* ───────────────────────────────────── + Toggle button + ───────────────────────────────────── */ + +.swc-MessageSources-toggle { + display: inline-flex; + gap: 4px; + align-items: center; + padding: 0; + font-family: token("sans-serif-font"); + font-size: token("font-size-75"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-font-size-75"); + color: token("gray-700"); + background: transparent; + border: none; + cursor: pointer; +} + +.swc-MessageSources-toggle:hover { + color: token("gray-800"); +} + +.swc-MessageSources-chevron { + transition: transform 130ms ease; +} + +.swc-MessageSources-chevron--down { + transform: rotate(90deg); +} + +/* ───────────────────────────────────── + Sources list + ───────────────────────────────────── */ + +.swc-MessageSources-list { + display: flex; + flex-direction: column; + gap: 4px; + padding: 0; + margin: 0; + list-style: none; + counter-reset: sources; +} + +/* Each slotted item is expected to be a <li> */ +::slotted(li) { + display: flex; + gap: 8px; + align-items: center; + font-family: token("sans-serif-font"); + font-size: token("font-size-75"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-font-size-75"); + color: token("gray-800"); + list-style: none; + counter-increment: sources; +} + +::slotted(li)::before { + display: inline-flex; + flex-shrink: 0; + align-items: center; + justify-content: center; + inline-size: 12px; + block-size: 20px; + font-size: token("font-size-50"); + font-weight: token("bold-font-weight"); + color: token("gray-700"); + background: token("gray-100"); + border-radius: 4px; + content: counter(sources); +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/stories/message-sources.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/stories/message-sources.stories.ts new file mode 100644 index 00000000000..84b8f5a3541 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/stories/message-sources.stories.ts @@ -0,0 +1,165 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers('swc-message-sources'); + +const defaultListItems = + '<li><a href="#">Adobe Experience Manager documentation</a></li><li><a href="#">Creative Cloud release notes 2026</a></li><li><a href="#">Firefly API getting started guide</a></li>'; + +delete (args as Record<string, unknown>).state; +delete (argTypes as Record<string, unknown>).state; + +argTypes.open = { + ...argTypes.open, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +/** + * A collapsible list of sources that informed an AI response. + * Slot `<li>` elements into the default slot; they will be numbered automatically. + */ +const meta: Meta = { + title: 'Conversational AI/Message sources', + component: 'swc-message-sources', + args: { + ...args, + open: false, + 'default-slot': defaultListItems, + }, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'Collapsible list of sources for an AI response.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + args: { + open: true, + }, + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A message sources component consists of: + * + * 1. **Toggle button** — Chevron + "Sources" label, acts as a disclosure button + * 2. **Sources list** — Numbered list of linked source items (visible when expanded) + */ +export const Anatomy: Story = { + args: { + open: true, + 'default-slot': + '<li><a href="#">Adobe Experience Manager documentation</a></li><li><a href="#">Creative Cloud release notes 2026</a></li>', + }, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * The `open` attribute controls whether the sources list is visible: + * + * - **`open=false`** — Only the toggle button is shown (default) + * - **`open=true`** — The numbered source list is revealed below the toggle + */ +export const Open: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:32px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-sources> + <li><a href="#">Adobe Experience Manager documentation</a></li> + <li><a href="#">Creative Cloud release notes 2026</a></li> + </swc-message-sources> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Collapsed + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-sources open> + <li><a href="#">Adobe Experience Manager documentation</a></li> + <li><a href="#">Creative Cloud release notes 2026</a></li> + <li><a href="#">Firefly API getting started guide</a></li> + </swc-message-sources> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Expanded + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-message-sources>` element implements the following accessibility features: + * + * #### Disclosure pattern + * + * - The toggle button uses `aria-expanded` to communicate open/closed state + * - The toggle button uses `aria-controls` pointing to the panel `id` + * - The sources panel uses `role="list"` with `aria-label="Sources"` + */ +export const Accessibility: Story = { + args: { + open: true, + }, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.a11y.spec.ts new file mode 100644 index 00000000000..6975287ffdd --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.a11y.spec.ts @@ -0,0 +1,31 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +test.describe('MessageSources - ARIA Snapshots', () => { + test('should have correct accessibility tree when expanded', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'conversational-ai-message-sources--overview', + 'swc-message-sources' + ); + await expect(root).toMatchAriaSnapshot(` + - button "Collapse sources" [expanded=true] + - list "Sources" + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.test.ts new file mode 100644 index 00000000000..df58885f85b --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-sources/test/message-sources.test.ts @@ -0,0 +1,72 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { MessageSources } from '../MessageSources.js'; +import { meta, Overview } from '../stories/message-sources.stories.js'; + +export default { + ...meta, + title: 'Conversational AI/Message sources/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<MessageSources>( + canvasElement, + 'swc-message-sources' + ); + + await step('renders with open state in overview', async () => { + expect(el.open).toBe(true); + }); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: State mutation +// ────────────────────────────────────────────────────────────── + +export const OpenMutationTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<MessageSources>( + canvasElement, + 'swc-message-sources' + ); + + await step('open reflects to attribute after mutation', async () => { + el.open = false; + await el.updateComplete; + expect(el.hasAttribute('open')).toBe(false); + + el.open = true; + await el.updateComplete; + expect(el.hasAttribute('open')).toBe(true); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/MessageSuggestions.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/MessageSuggestions.ts new file mode 100644 index 00000000000..7c3b3c854c5 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/MessageSuggestions.ts @@ -0,0 +1,128 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, PropertyValues, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; +import { createRef, ref } from 'lit/directives/ref.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { ArrowCurvedIcon } from '../utils/icons/index.js'; + +import styles from './message-suggestions.css'; + +/** + * A row of follow-up suggestion chips rendered below an AI response. + * + * Add **any number** of text elements in the **default slot** + * (for example, one `<span>` per suggestion). Label text is taken from each + * element's **`textContent`**. + * + * @element swc-message-suggestions + * @slot - One element per suggestion; chip label comes from each item's `textContent` + */ +export class MessageSuggestions extends SpectrumElement { + /** + * Optional heading shown above the actions row. + */ + @property({ type: String, reflect: true }) + public override title = ''; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _defaultSlotRef = createRef<HTMLSlotElement>(); + private _chipLabels: string[] = []; + + protected override firstUpdated(_changed: PropertyValues): void { + super.firstUpdated(_changed); + this._syncFromSlot(); + } + + private _syncFromSlot(): void { + const slot = this._defaultSlotRef.value; + if (!slot) { + return; + } + + this._chipLabels = slot + .assignedElements({ flatten: true }) + .map((el) => el.textContent?.trim() ?? '') + .filter(Boolean); + this.requestUpdate(); + } + + private _dispatchSuggestion(index: number): void { + this.dispatchEvent( + new CustomEvent('swc-suggestion', { + bubbles: true, + composed: true, + detail: { index: index + 1 }, + }) + ); + } + + private _handleChipButtonClick(event: Event): void { + const button = event.currentTarget as HTMLButtonElement; + const index = Number(button.dataset.index); + if (!Number.isInteger(index)) { + return; + } + this._dispatchSuggestion(index); + } + + protected override render(): TemplateResult { + return html` + <div class="swc-MessageSuggestions"> + ${this.title + ? html` + <p class="swc-MessageSuggestions-title"> + ${this.title} + </p> + ` + : ''} + <div + class="swc-MessageSuggestions-chips" + role="group" + aria-label="Follow-up suggestions" + > + ${this._chipLabels.map( + (label, i) => html` + <button + type="button" + class="swc-MessageSuggestions-chip" + data-index=${String(i)} + @click=${this._handleChipButtonClick} + > + <swc-icon + style="--swc-icon-inline-size:14px;--swc-icon-block-size:14px;" + label="" + > + ${ArrowCurvedIcon()} + </swc-icon> + ${label} + </button> + ` + )} + </div> + <slot + ${ref(this._defaultSlotRef)} + hidden + @slotchange=${this._syncFromSlot} + ></slot> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/index.ts new file mode 100644 index 00000000000..8d4b84b7304 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { MessageSuggestions } from './MessageSuggestions.js'; + +export * from './MessageSuggestions.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-message-suggestions': MessageSuggestions; + } +} + +defineElement('swc-message-suggestions', MessageSuggestions); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/message-suggestions.css b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/message-suggestions.css new file mode 100644 index 00000000000..2ecf31f2640 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/message-suggestions.css @@ -0,0 +1,85 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-MessageSuggestions { + display: flex; + flex-direction: column; + gap: 8px; +} + +/* ───────────────────────────────────── + Section title + ───────────────────────────────────── */ + +.swc-MessageSuggestions-title { + margin: 0; + font-family: token("sans-serif-font"); + font-size: token("font-size-300"); + font-weight: token("bold-font-weight"); + line-height: token("line-height-font-size-300"); + color: token("gray-900"); +} + +/* ───────────────────────────────────── + Chips row + ───────────────────────────────────── */ + +.swc-MessageSuggestions-chips { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +/* ───────────────────────────────────── + Individual chip + ───────────────────────────────────── */ + +.swc-MessageSuggestions-chip { + display: inline-flex; + gap: 0; + align-items: center; + padding-block: 10px; + padding-inline-start: 13px; + padding-inline-end: 15px; + font-family: token("sans-serif-font"); + font-size: token("font-size-200"); + font-weight: token("medium-font-weight"); + line-height: token("line-height-font-size-200"); + color: token("gray-900"); + background: token("gray-50"); + border: none; + border-radius: 9px; + cursor: pointer; + transition: background 130ms ease; +} + +.swc-MessageSuggestions-chip:hover { + background: token("gray-100"); +} + +.swc-MessageSuggestions-chip swc-icon { + --swc-icon-inline-size: 22px; + --swc-icon-block-size: 22px; + + flex-shrink: 0; + margin-inline-end: 6px; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/stories/message-suggestions.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/stories/message-suggestions.stories.ts new file mode 100644 index 00000000000..0b66a02dcde --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/stories/message-suggestions.stories.ts @@ -0,0 +1,202 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +/** Default-slot HTML for three suggestions (recommended count in docs). */ +const threeSuggestionsSlot = `<span>Create a slide deck from this</span><span>Summarize in 3 bullet points</span><span>Translate to Spanish</span>`; + +const { args, argTypes, template } = getStorybookHelpers( + 'swc-message-suggestions' +); + +/** + * Follow-up suggestion chips for an AI response. + * Put **text elements** (e.g. `<span>`) in the default slot. Chip labels are derived from `textContent`. + * + * **Recommendation:** use **three** suggestions for most layouts; more are supported and + * wrap to additional rows (`flex-wrap`). + */ +const meta: Meta = { + title: 'Conversational AI/Message suggestions', + component: 'swc-message-suggestions', + args: { + ...args, + 'default-slot': threeSuggestionsSlot, + title: '', + }, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'Follow-up suggestion chips for an AI response.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A message suggestions component consists of: + * + * 1. **Title** — Optional heading via the `title` property + * 2. **Chips** — One generated action button per **default-slot** child + */ +export const Anatomy: Story = { + args: { + title: 'What would you like to do next?', + 'default-slot': threeSuggestionsSlot, + }, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * Chip count follows the number of **default-slot** children. Three is a good default for + * scanning; one, many, or zero (empty row) are all valid. + */ +export const SuggestionCount: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:32px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-suggestions> + <span>Create a slide deck from this</span> + </swc-message-suggestions> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + One suggestion + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-suggestions> + <span>Create a slide deck from this</span> + <span>Summarize in 3 bullet points</span> + <span>Translate to Spanish</span> + </swc-message-suggestions> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Three suggestions (recommended) + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-suggestions> + <span>Refine the executive summary</span> + <span>Add competitive analysis</span> + <span>Shorten for a 5-minute read</span> + <span>Export as talking points</span> + <span>Suggest a subject line</span> + </swc-message-suggestions> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Five suggestions (wraps) + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +/** + * When `title` is provided, a heading appears + * above the chips row. + */ +export const Title: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:32px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-suggestions> + <span>Create a slide deck from this</span> + <span>Summarize in 3 bullet points</span> + <span>Translate to Spanish</span> + </swc-message-suggestions> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + No title + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-message-suggestions title="What would you like to do next?"> + <span>Create a slide deck from this</span> + <span>Summarize in 3 bullet points</span> + <span>Translate to Spanish</span> + </swc-message-suggestions> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + With title + </span> + </div> + </div> + `, + parameters: { 'section-order': 2 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-message-suggestions>` element implements the following accessibility features: + * + * #### Chip buttons + * + * - The component renders native chip `<button>` elements in shadow DOM from slotted text content + * - Supply meaningful text via default-slot elements (e.g., `<span>`) + * - The suggestions row uses `role="group"` with `aria-label="Follow-up suggestions"` + */ +export const Accessibility: Story = { + args: { + 'default-slot': threeSuggestionsSlot, + }, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.a11y.spec.ts new file mode 100644 index 00000000000..41eb1c28277 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.a11y.spec.ts @@ -0,0 +1,30 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +test.describe('MessageSuggestions - ARIA Snapshots', () => { + test('should have correct accessibility tree', async ({ page }) => { + const root = await gotoStory( + page, + 'conversational-ai-message-suggestions--overview', + 'swc-message-suggestions' + ); + await expect(root).toMatchAriaSnapshot(` + - button: /Create a slide deck/ + - button: /Summarize in/ + - button: /Translate to/ + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.test.ts new file mode 100644 index 00000000000..8d98d8e5b0b --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/message-suggestions/test/message-suggestions.test.ts @@ -0,0 +1,55 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { MessageSuggestions } from '../MessageSuggestions.js'; +import { meta, Overview } from '../stories/message-suggestions.stories.js'; + +export default { + ...meta, + title: 'Conversational AI/Message suggestions/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<MessageSuggestions>( + canvasElement, + 'swc-message-suggestions' + ); + + await step('renders with empty title by default', async () => { + expect(el.title).toBe(''); + }); + + await step('renders three generated chips from three slot items', async () => { + const chips = el.shadowRoot?.querySelectorAll( + '.swc-MessageSuggestions-chip' + ); + expect(chips?.length).toBe(3); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/PromptField.ts b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/PromptField.ts new file mode 100644 index 00000000000..56790942dfd --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/PromptField.ts @@ -0,0 +1,202 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { + ChevronUpIcon, + PlusIcon, + StopIcon, +} from '../utils/icons/index.js'; + +import styles from './prompt-field.css'; + +/** + * Prompt entry surface for conversational AI flows. + * + * Fires events for all interactions; consumers are responsible for managing state. + * + * @element swc-prompt-field + * + * @slot artifact - Optional attachment preview(s); supports multiple slotted artifacts. + * @slot leading-actions - Optional additional actions shown next to the upload button. + */ +export class PromptField extends SpectrumElement { + /** When `true`, show the stop action in place of send. */ + @property({ type: Boolean, reflect: true }) + public sending = false; + + /** Accessible label shown above the textarea. */ + @property({ type: String }) + public label = 'Prompt'; + + /** Placeholder text shown inside the textarea. */ + @property({ type: String }) + public placeholder = 'Ask anything'; + + /** The current textarea value. Controlled by the consumer. */ + @property({ type: String }) + public value = ''; + + private _hasArtifacts = false; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _handleInput(event: Event): void { + const textarea = event.target as HTMLTextAreaElement; + this.value = textarea.value; + this.dispatchEvent( + new CustomEvent('swc-input', { + bubbles: true, + composed: true, + detail: { value: this.value }, + }) + ); + } + + private _handleSendClick(): void { + if (!this._isPopulated) { + return; + } + this.dispatchEvent( + new CustomEvent('swc-submit', { bubbles: true, composed: true }) + ); + } + + private _handleStopClick(): void { + this.dispatchEvent( + new CustomEvent('swc-stop', { bubbles: true, composed: true }) + ); + } + + private _handleUploadClick(): void { + this.dispatchEvent( + new CustomEvent('swc-upload-click', { bubbles: true, composed: true }) + ); + } + + private _syncArtifactPresenceFromSlot(slot?: HTMLSlotElement): void { + const artifactSlot = + slot ?? + this.shadowRoot?.querySelector<HTMLSlotElement>('slot[name="artifact"]'); + + const hasArtifacts = + (artifactSlot?.assignedElements({ flatten: true })?.length ?? 0) > 0; + + if (hasArtifacts !== this._hasArtifacts) { + this._hasArtifacts = hasArtifacts; + this.requestUpdate(); + } + } + + private _handleArtifactSlotChange(event: Event): void { + this._syncArtifactPresenceFromSlot(event.target as HTMLSlotElement); + } + + private get _isPopulated(): boolean { + return this.value.trim().length > 0 || this._hasArtifacts; + } + + protected override firstUpdated(): void { + this._syncArtifactPresenceFromSlot(); + } + + private _renderArtifact(): TemplateResult { + return html` + <div + class="swc-PromptField-artifacts" + ?hidden=${!this._hasArtifacts} + > + <slot + name="artifact" + @slotchange=${this._handleArtifactSlotChange} + ></slot> + </div> + `; + } + + private _renderSendButton(): TemplateResult { + return html` + <button + class="swc-PromptField-send" + ?disabled=${!this._isPopulated} + aria-label="Send" + @click=${this._handleSendClick} + > + <swc-icon label="Send">${ChevronUpIcon()}</swc-icon> + </button> + `; + } + + private _renderStopButton(): TemplateResult { + return html` + <button + class="swc-PromptField-stop" + aria-label="Stop generating" + @click=${this._handleStopClick} + > + <swc-icon label="Stop">${StopIcon()}</swc-icon> + </button> + `; + } + + protected override render(): TemplateResult { + const showStop = this.sending; + + return html` + <div class="swc-PromptField"> + <div class="swc-PromptField-box"> + <div + class="swc-PromptField-input-area${this._hasArtifacts + ? ' has-artifact' + : ''}" + > + ${this._renderArtifact()} + <div class="swc-PromptField-text-area"> + <span class="swc-PromptField-label">${this.label}</span> + <textarea + class="swc-PromptField-textarea" + .value=${this.value} + placeholder=${this.placeholder} + aria-label=${this.label} + rows="1" + @input=${this._handleInput} + ></textarea> + </div> + </div> + + <div class="swc-PromptField-action-bar"> + <div class="swc-PromptField-leading-actions"> + <button + class="swc-PromptField-upload" + aria-label="Add attachment" + @click=${this._handleUploadClick} + > + <swc-icon label="Add">${PlusIcon()}</swc-icon> + </button> + <slot name="leading-actions"></slot> + </div> + + ${showStop ? this._renderStopButton() : this._renderSendButton()} + </div> + </div> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/index.ts new file mode 100644 index 00000000000..74b3077e83e --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { PromptField } from './PromptField.js'; + +export * from './PromptField.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-prompt-field': PromptField; + } +} + +defineElement('swc-prompt-field', PromptField); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/prompt-field.css b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/prompt-field.css new file mode 100644 index 00000000000..5d81bcc341e --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/prompt-field.css @@ -0,0 +1,244 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; + inline-size: 100%; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* ───────────────────────────────────── + Outer wrapper + ───────────────────────────────────── */ + +.swc-PromptField { + display: flex; + flex-direction: column; + gap: 12px; + inline-size: 100%; +} + +/* ───────────────────────────────────── + White card box with shadow + ───────────────────────────────────── */ + +.swc-PromptField-box { + display: flex; + flex-direction: column; + gap: token("spacing-300"); + padding: token("spacing-300"); + background: token("gray-25"); + border-radius: token("corner-radius-800"); + box-shadow: token("drop-shadow-emphasized-default-x") token("drop-shadow-emphasized-default-y") token("drop-shadow-emphasized-default-blur") token("drop-shadow-emphasized-default-color"); + overflow: hidden; +} + +/* ───────────────────────────────────── + Input area (artifact + text area) + ───────────────────────────────────── */ + +.swc-PromptField-input-area { + display: flex; + flex-direction: column; + gap: token("spacing-300"); + padding-block-start: 0; + padding-inline: token("spacing-100"); +} + +/* Figma: input area uses 8px top padding only when an artifact row is shown. */ +.swc-PromptField-input-area.has-artifact { + padding-block-start: token("spacing-100"); +} + +/* ───────────────────────────────────── + Uploaded artifacts + ───────────────────────────────────── */ + +.swc-PromptField-artifacts { + display: flex; + flex-wrap: wrap; + gap: token("spacing-100"); + align-items: flex-start; +} + +/* Mixed card/media artifacts support horizontal flow with wrapping. */ +.swc-PromptField-artifacts > slot::slotted(*) { + flex: 0 0 auto; +} + +/* Prompt-field media artifact uses 68×68 preview tile. */ +.swc-PromptField-artifacts > slot::slotted([variant="media"]) { + inline-size: 68px; + min-inline-size: 68px; + block-size: 68px; + min-block-size: 68px; + aspect-ratio: 1 / 1; +} + +/* Card artifacts can grow but wrap naturally in multi-artifact sets. */ +.swc-PromptField-artifacts > slot::slotted([variant="card"]) { + flex: 1 1 324px; + inline-size: auto; + min-inline-size: min(324px, 100%); + max-inline-size: 100%; +} + +/* ───────────────────────────────────── + Text area (label + textarea) + ───────────────────────────────────── */ + +.swc-PromptField-text-area { + display: flex; + flex-direction: column; + gap: 4px; +} + +.swc-PromptField-label { + display: block; + font-family: token("sans-serif-font"); + font-size: token("font-size-100"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-100"); + color: token("gray-700"); +} + +.swc-PromptField-textarea { + field-sizing: content; + display: block; + inline-size: 100%; + min-block-size: calc(token("font-size-100") * token("line-height-100")); + max-block-size: 72px; + padding: 0; + font-family: token("sans-serif-font"); + font-size: token("font-size-100"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-100"); + color: token("gray-900"); + background: transparent; + border: none; + resize: none; + outline: none; +} + +.swc-PromptField-textarea::placeholder { + color: token("gray-500"); +} + +/* ───────────────────────────────────── + Action bar + ───────────────────────────────────── */ + +.swc-PromptField-action-bar { + display: flex; + align-items: center; + justify-content: space-between; +} + +.swc-PromptField-leading-actions { + display: inline-flex; + gap: token("spacing-75"); + align-items: center; +} + +.swc-PromptField-leading-actions ::slotted(*) { + display: inline-flex; + align-items: center; +} + +/* Upload button (quiet, left side) */ + +.swc-PromptField-upload { + display: flex; + align-items: center; + justify-content: center; + inline-size: 32px; + block-size: 32px; + padding: 0; + color: token("gray-800"); + background: transparent; + border: none; + border-radius: token("corner-radius-500"); + cursor: pointer; +} + +.swc-PromptField-upload:hover { + color: token("gray-800"); + background: token("gray-75"); +} + +.swc-PromptField-upload swc-icon { + --swc-icon-inline-size: 20px; + --swc-icon-block-size: 20px; +} + +/* Send button (filled circle, right side) */ + +.swc-PromptField-send { + display: flex; + align-items: center; + justify-content: center; + inline-size: 32px; + block-size: 32px; + padding: 0; + color: token("gray-25"); + background: token("accent-background-color-default"); + border: none; + border-radius: 50%; + cursor: pointer; + transition: background 130ms ease; +} + +.swc-PromptField-send:disabled { + color: token("gray-400"); + background: token("gray-100"); + cursor: default; +} + +.swc-PromptField-send:hover:not(:disabled) { + background: token("accent-background-color-hover"); +} + +.swc-PromptField-send swc-icon { + --swc-icon-inline-size: 20px; + --swc-icon-block-size: 20px; +} + +/* Stop button (filled black circle, right side) */ + +.swc-PromptField-stop { + display: flex; + align-items: center; + justify-content: center; + inline-size: 32px; + block-size: 32px; + padding: 0; + color: token("gray-25"); + background: token("gray-900"); + border: none; + border-radius: 50%; + cursor: pointer; + transition: background 130ms ease; +} + +.swc-PromptField-stop:hover { + background: token("gray-800"); +} + +.swc-PromptField-stop swc-icon { + --swc-icon-inline-size: 20px; + --swc-icon-block-size: 20px; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/stories/prompt-field.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/stories/prompt-field.stories.ts new file mode 100644 index 00000000000..1f1479d4eea --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/stories/prompt-field.stories.ts @@ -0,0 +1,335 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '@spectrum-web-components/action-menu/sp-action-menu.js'; +import '@spectrum-web-components/menu/sp-menu-item.js'; +import '../../conversation-artifact/index.js'; +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers('swc-prompt-field'); + +argTypes.sending = { + ...argTypes.sending, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +/** + * The prompt entry surface for conversational AI flows. + * Fires events for all interactions — consumers manage state externally. + */ +const meta: Meta = { + title: 'Conversational AI/Prompt field', + component: 'swc-prompt-field', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'Prompt entry surface for conversational AI flows.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + args: { + label: 'Prompt', + placeholder: 'Ask anything', + value: '', + sending: false, + }, + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + args: { + label: 'Prompt', + placeholder: 'Ask anything', + value: '', + sending: false, + }, + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A prompt field consists of: + * + * 1. **Box** — White card with shadow and 16px border radius + * 2. **Input area** — Optional artifact preview + prompt label + textarea + * 3. **Action bar** — Upload button + optional `leading-actions` slot content (left), and send/stop button (right) + */ +export const Anatomy: Story = { + args: { + label: 'Prompt', + placeholder: 'Ask anything', + value: '', + sending: false, + }, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * The `sending` attribute controls the right-side action: + * + * - **`false`** — Send button is shown + * - **`true`** — Stop button is shown while the AI is generating a response + * + * The send button enablement is derived internally from prompt content (value or artifact). + */ +export const Sending: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:32px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field + label="Prompt" + placeholder="Ask anything" + ></swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + 'sending=false' with empty value + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field + label="Prompt" + value="Summarize the API changes in this branch." + ></swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + 'sending=false' with entered value + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field + sending + label="Prompt" + value="Summarize the API changes in this branch." + ></swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + 'sending=true' (input remains editable) + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +/** + * Artifact layout is inferred from the **`artifact`** slot content and supports multiple mixed items: + * + * - No slot content: no artifact region + * - `swc-conversation-artifact variant="card"`: file-style card artifact + * - `swc-conversation-artifact variant="media"`: media tile artifact + * + * Artifacts own dismiss behavior via `dismissible` and emit `swc-artifact-dismiss`. + */ +export const Artifact: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:32px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field label="Prompt" placeholder="Ask anything"></swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + None + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field label="Prompt" placeholder="Ask anything"> + <swc-conversation-artifact + slot="artifact" + variant="card" + dismissible + > + <div + slot="thumbnail" + style="background:var(--swc-gray-200);" + role="img" + aria-label="PDF" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Card + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field label="Prompt" placeholder="Ask anything"> + <swc-conversation-artifact + slot="artifact" + variant="media" + dismissible + > + <div + slot="thumbnail" + style="inline-size:100%;block-size:100%;min-block-size:0;background:linear-gradient(135deg,#a78bfa,#f472b6);" + role="img" + aria-label="Attachment preview" + ></div> + </swc-conversation-artifact> + </swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Media + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-prompt-field label="Prompt" value="Use attached assets for a launch plan."> + <swc-conversation-artifact + slot="artifact" + variant="card" + dismissible + > + <div + slot="thumbnail" + style="background:var(--swc-gray-200);" + role="img" + aria-label="PDF" + ></div> + <span slot="title">Brand guidelines</span> + <span slot="subtitle">PDF</span> + </swc-conversation-artifact> + <swc-conversation-artifact + slot="artifact" + variant="media" + dismissible + > + <div + slot="thumbnail" + style="inline-size:100%;block-size:100%;background:linear-gradient(135deg,#6366f1,#ec4899);" + role="img" + aria-label="Campaign still" + ></div> + </swc-conversation-artifact> + <swc-conversation-artifact + slot="artifact" + variant="media" + dismissible + > + <div + slot="thumbnail" + style="inline-size:100%;block-size:100%;background:linear-gradient(135deg,#0ea5e9,#22c55e);" + role="img" + aria-label="Storyboard frame" + ></div> + </swc-conversation-artifact> + </swc-prompt-field> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Mixed multi-artifact set (wrapping layout) + </span> + </div> + </div> + `, + parameters: { 'section-order': 2 }, + tags: ['options'], +}; + +/** + * Use the `leading-actions` slot to add optional controls next to upload on the left side + * (for example quick actions, overflow menu, or custom tooling). + */ +export const LeadingActions: Story = { + render: () => html` + <swc-prompt-field + label="Prompt" + value="Summarize the API changes in this branch." + > + <sp-action-menu + slot="leading-actions" + quiet + label="Prompt options" + style="inline-size:32px;block-size:32px;" + > + <sp-menu-item value="rewrite">Rewrite text</sp-menu-item> + <sp-menu-item value="shorten">Shorten</sp-menu-item> + <sp-menu-item value="expand">Expand</sp-menu-item> + </sp-action-menu> + </swc-prompt-field> + `, + parameters: { 'section-order': 3 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-prompt-field>` element implements the following accessibility features: + * + * #### Label association + * + * - The `<textarea>` has an `aria-label` matching the `label` property + * - All icon buttons carry descriptive `aria-label` attributes + * - The send button uses `disabled` natively when the prompt has no content + * + * ### Best practices + * + * - Always provide a meaningful `label` value + * - Use `placeholder` as a hint, not a replacement for the label + * - Ensure artifact content slotted into `artifact` slot includes descriptive text + * - Provide `aria-label` values for interactive elements added to the `leading-actions` slot + */ +export const Accessibility: Story = { + args: { + label: 'Prompt', + placeholder: 'Ask anything', + value: '', + sending: false, + }, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.a11y.spec.ts new file mode 100644 index 00000000000..7e907628c92 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.a11y.spec.ts @@ -0,0 +1,41 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +/** + * Accessibility tests for PromptField pattern (2nd Generation) + * + * ARIA snapshot tests validate the accessibility tree structure. + * aXe WCAG compliance and color contrast validation are run via + * test-storybook (see .storybook/test-runner.ts). Both are included + * in the `test:a11y` command. + */ + +test.describe('PromptField - ARIA Snapshots', () => { + test('should have correct accessibility tree for default prompt field', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'conversational-ai-prompt-field--overview', + 'swc-prompt-field' + ); + await expect(root).toMatchAriaSnapshot(` + - textbox "Prompt" + - button "Add attachment" + - button "Send" [disabled] + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.test.ts new file mode 100644 index 00000000000..21fbb1ee091 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/prompt-field/test/prompt-field.test.ts @@ -0,0 +1,195 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../../conversation-artifact/index.js'; +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { PromptField } from '../PromptField.js'; +import { meta, Overview } from '../stories/prompt-field.stories.js'; + +// This file defines dev-only test stories that reuse the main story metadata. +export default { + ...meta, + title: 'Conversational AI/Prompt field/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<PromptField>( + canvasElement, + 'swc-prompt-field' + ); + + await step( + 'renders with default sending state', + async () => { + expect(el.sending).toBe(false); + expect(el.label).toBe('Prompt'); + expect(el.placeholder).toBe('Ask anything'); + } + ); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Properties / Attributes +// ────────────────────────────────────────────────────────────── + +export const PropertyMutationTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<PromptField>( + canvasElement, + 'swc-prompt-field' + ); + + await step('sending reflects to attribute after mutation', async () => { + el.sending = true; + await el.updateComplete; + expect(el.hasAttribute('sending')).toBe(true); + + el.sending = false; + await el.updateComplete; + expect(el.hasAttribute('sending')).toBe(false); + }); + + await step( + 'leading-actions slot accepts consumer-provided controls', + async () => { + el.innerHTML = '<button slot="leading-actions">Options</button>'; + await el.updateComplete; + + const slot = el.shadowRoot?.querySelector<HTMLSlotElement>( + 'slot[name="leading-actions"]' + ); + const assigned = slot?.assignedElements({ flatten: true }) ?? []; + expect(assigned.length).toBe(1); + } + ); + + await step( + 'artifact slot supports multiple assigned artifacts', + async () => { + el.innerHTML = ` + <swc-conversation-artifact slot="artifact" variant="card"></swc-conversation-artifact> + <swc-conversation-artifact slot="artifact" variant="media"></swc-conversation-artifact> + `; + await el.updateComplete; + + const slot = el.shadowRoot?.querySelector<HTMLSlotElement>( + 'slot[name="artifact"]' + ); + const assigned = slot?.assignedElements({ flatten: true }) ?? []; + expect(assigned.length).toBe(2); + } + ); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: Events +// ────────────────────────────────────────────────────────────── + +export const EventsTest: Story = { + ...Overview, + args: { + ...Overview.args, + value: 'Summarize the API changes in this branch.', + sending: false, + }, + play: async ({ canvasElement, step }) => { + const el = await getComponent<PromptField>( + canvasElement, + 'swc-prompt-field' + ); + + await step('fires swc-submit when send button clicked', async () => { + let fired = false; + el.addEventListener( + 'swc-submit', + () => { + fired = true; + }, + { once: true } + ); + + const sendBtn = el.shadowRoot?.querySelector<HTMLButtonElement>( + '.swc-PromptField-send' + ); + sendBtn?.click(); + expect(fired).toBe(true); + }); + + await step( + 'fires swc-upload-click when upload button clicked', + async () => { + let fired = false; + el.addEventListener( + 'swc-upload-click', + () => { + fired = true; + }, + { once: true } + ); + + const uploadBtn = el.shadowRoot?.querySelector<HTMLButtonElement>( + '.swc-PromptField-upload' + ); + uploadBtn?.click(); + expect(fired).toBe(true); + } + ); + + await step( + 'bubbles swc-artifact-dismiss from a dismissible artifact', + async () => { + el.innerHTML = ` + <swc-conversation-artifact slot="artifact" variant="media" dismissible> + <div slot="thumbnail" style="inline-size:100%;block-size:100%;"></div> + </swc-conversation-artifact> + `; + await el.updateComplete; + + let fired = false; + el.addEventListener( + 'swc-artifact-dismiss', + () => { + fired = true; + }, + { once: true } + ); + + const dismissBtn = el.querySelector('swc-conversation-artifact') + ?.shadowRoot + ?.querySelector<HTMLButtonElement>( + '.swc-ConversationArtifact-dismiss' + ); + dismissBtn?.click(); + expect(fired).toBe(true); + } + ); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/ResponseStatus.ts b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/ResponseStatus.ts new file mode 100644 index 00000000000..862bbefca92 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/ResponseStatus.ts @@ -0,0 +1,147 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { + CSSResultArray, + html, + TemplateResult, +} from 'lit'; +import { property } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import '@adobe/spectrum-wc/icon'; + +import { Chevron75Icon } from '../../../components/icon/elements/index.js'; +import { CheckCircleIcon } from '../utils/icons/index.js'; + +import styles from './response-status.css'; + +/** + * Displays the current status of an AI response generation. + * + * While **`loading`** is `true`, reasoning is not shown. + * + * @element swc-response-status + * @slot reasoning - Optional reasoning content shown when `loading` is `false` and `open` is `true`. + */ +export class ResponseStatus extends SpectrumElement { + /** `true`: spinner + "Thinking…", `false`: checkmark + "Response generated". */ + @property({ type: Boolean, reflect: true }) + public loading = false; + + /** + * `true`: reasoning expanded; `false`: reasoning collapsed. + * Ignored while `loading` is `true`. + */ + @property({ type: Boolean, reflect: true }) + public open = false; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _handleReasoningToggle(): void { + if (this.loading) { + return; + } + this.open = !this.open; + this.dispatchEvent( + new CustomEvent('swc-reasoning-toggle', { + bubbles: true, + composed: true, + detail: { open: this.open }, + }) + ); + } + + private _renderLoadingRow(): TemplateResult { + return html` + <div class="swc-ResponseStatus-row"> + <span + class="swc-ResponseStatus-spinner" + role="status" + aria-label="Thinking" + ></span> + <span class="swc-ResponseStatus-label">Thinking…</span> + </div> + `; + } + + private _renderCompleteRow(): TemplateResult { + const showDisclosure = true; + const expanded = this.open; + + if (showDisclosure) { + return html` + <button + class="swc-ResponseStatus-row swc-ResponseStatus-row--button" + aria-expanded=${expanded} + aria-controls="swc-reasoning-panel" + @click=${this._handleReasoningToggle} + > + <swc-icon + class=${expanded + ? 'swc-ResponseStatus-chevron swc-ResponseStatus-chevron--down' + : 'swc-ResponseStatus-chevron'} + style="--swc-icon-inline-size:10px;--swc-icon-block-size:10px;" + label=${expanded ? 'Collapse reasoning' : 'Expand reasoning'} + > + ${Chevron75Icon()} + </swc-icon> + <span class="swc-ResponseStatus-label">Response generated</span> + <swc-icon + style="--swc-icon-inline-size:20px;--swc-icon-block-size:20px;" + label="Response generated" + > + ${CheckCircleIcon()} + </swc-icon> + </button> + `; + } + + return html` + <div class="swc-ResponseStatus-row"> + <swc-icon + style="--swc-icon-inline-size:20px;--swc-icon-block-size:20px;" + label="Response generated" + > + ${CheckCircleIcon()} + </swc-icon> + <span class="swc-ResponseStatus-label">Response generated</span> + </div> + `; + } + + protected override render(): TemplateResult { + const isLoading = this.loading; + const showReasoningPanel = !isLoading && this.open; + + return html` + <div class="swc-ResponseStatus"> + ${isLoading ? this._renderLoadingRow() : this._renderCompleteRow()} + ${showReasoningPanel + ? html` + <div + id="swc-reasoning-panel" + class="swc-ResponseStatus-reasoning-panel" + role="region" + aria-label="Reasoning" + > + <slot name="reasoning"></slot> + </div> + ` + : ''} + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/index.ts new file mode 100644 index 00000000000..e6685d9f46d --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { ResponseStatus } from './ResponseStatus.js'; + +export * from './ResponseStatus.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-response-status': ResponseStatus; + } +} + +defineElement('swc-response-status', ResponseStatus); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/response-status.css b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/response-status.css new file mode 100644 index 00000000000..c6f4f52193e --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/response-status.css @@ -0,0 +1,102 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-ResponseStatus { + display: flex; + flex-direction: column; + gap: 8px; +} + +/* ───────────────────────────────────── + Status row (icon + label [+ checkmark]) + ───────────────────────────────────── */ + +.swc-ResponseStatus-row { + display: flex; + gap: 8px; + align-items: center; + block-size: 32px; +} + +/* When the row is a button (reasoning toggle) */ +.swc-ResponseStatus-row--button { + padding: 0; + background: transparent; + border: none; + cursor: pointer; +} + +/* Spinner — animated loading indicator */ + +.swc-ResponseStatus-spinner { + display: inline-block; + flex-shrink: 0; + inline-size: 16px; + block-size: 16px; + border: 2px solid token("gray-300"); + border-block-start-color: token("gray-700"); + border-radius: 50%; + animation: swc-spinner 0.8s linear infinite; +} + +@keyframes swc-spinner { + to { + transform: rotate(360deg); + } +} + +.swc-ResponseStatus-label { + font-family: token("sans-serif-font"); + font-size: token("font-size-100"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-font-size-100"); + color: token("gray-600"); +} + +.swc-ResponseStatus-row--button:hover .swc-ResponseStatus-label { + color: token("gray-800"); +} + +/* ───────────────────────────────────── + Chevron direction + ───────────────────────────────────── */ + +.swc-ResponseStatus-chevron { + flex-shrink: 0; + transition: transform 130ms ease; +} + +.swc-ResponseStatus-chevron--down { + transform: rotate(90deg); +} + +/* ───────────────────────────────────── + Reasoning panel + ───────────────────────────────────── */ + +.swc-ResponseStatus-reasoning-panel { + font-family: token("sans-serif-font"); + font-size: token("font-size-100"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-font-size-100"); + color: token("gray-600"); +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/stories/response-status.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/stories/response-status.stories.ts new file mode 100644 index 00000000000..91caa727a72 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/stories/response-status.stories.ts @@ -0,0 +1,204 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers('swc-response-status'); + +delete (args as Record<string, unknown>).state; +delete (args as Record<string, unknown>).reasoning; +delete (argTypes as Record<string, unknown>).state; +delete (argTypes as Record<string, unknown>).reasoning; + +argTypes.loading = { + ...argTypes.loading, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +argTypes.open = { + ...argTypes.open, + control: { type: 'boolean' }, + table: { + category: 'attributes', + defaultValue: { summary: 'false' }, + }, +}; + +/** + * Displays AI response progress with a loading spinner and optional reasoning disclosure. + */ +const meta: Meta = { + title: 'Conversational AI/Response status', + component: 'swc-response-status', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'AI response generation status indicator.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + args: { + loading: true, + open: false, + }, + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + args: { + loading: true, + open: false, + }, + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A response status indicator consists of: + * + * 1. **Status row** — An animated spinner (loading) or checkmark (complete) with a label + * 2. **Reasoning toggle** — Optional expandable disclosure for chain-of-thought content + */ +export const Anatomy: Story = { + args: { + loading: true, + open: false, + }, + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * The `loading` attribute controls which indicator is shown: + * + * - **`loading=true`** — Animated spinner + "Thinking…" label + * - **`loading=false`** — Checkmark + "Response generated" label + */ +export const Loading: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:24px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-response-status loading></swc-response-status> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Loading + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-response-status></swc-response-status> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Complete + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +/** + * Set **`open`** to control reasoning disclosure: + * + * - **`open=false`** — reasoning collapsed + * - **`open=true`** — reasoning expanded + * + * While **`loading=true`**, reasoning UI is not shown. + */ +export const Reasoning: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:24px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-response-status></swc-response-status> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Reasoning collapsed + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-response-status open> + <span slot="reasoning"> + Step 1: Analyzing the request… Step 2: Searching for relevant + context… Step 3: Composing response. + </span> + </swc-response-status> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Reasoning expanded + </span> + </div> + </div> + `, + parameters: { 'section-order': 2 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-response-status>` element implements the following accessibility features: + * + * #### Status announcement + * + * - The spinner element carries `role="status"` and `aria-label="Thinking"` for screen reader announcement + * - The reasoning toggle uses `aria-expanded` and `aria-controls` to communicate panel state + * - The reasoning panel uses `role="region"` with `aria-label="Reasoning"` + */ +export const Accessibility: Story = { + args: { + loading: false, + open: false, + }, + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.a11y.spec.ts new file mode 100644 index 00000000000..3399b177d03 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.a11y.spec.ts @@ -0,0 +1,31 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +test.describe('ResponseStatus - ARIA Snapshots', () => { + test('should have correct accessibility tree for loading state', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'conversational-ai-response-status--overview', + 'swc-response-status' + ); + await expect(root).toMatchAriaSnapshot(` + - status "Thinking" + - text: Thinking… + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.test.ts new file mode 100644 index 00000000000..caa9e928278 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/response-status/test/response-status.test.ts @@ -0,0 +1,83 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { ResponseStatus } from '../ResponseStatus.js'; +import { meta, Overview } from '../stories/response-status.stories.js'; + +export default { + ...meta, + title: 'Conversational AI/Response status/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +// ────────────────────────────────────────────────────────────── +// TEST: Defaults +// ────────────────────────────────────────────────────────────── + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<ResponseStatus>( + canvasElement, + 'swc-response-status' + ); + + await step('renders with overview args', async () => { + expect(el.loading).toBe(true); + expect(el.open).toBe(false); + }); + }, +}; + +// ────────────────────────────────────────────────────────────── +// TEST: State mutation +// ────────────────────────────────────────────────────────────── + +export const BooleanMutationTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<ResponseStatus>( + canvasElement, + 'swc-response-status' + ); + + await step('loading reflects to attribute after mutation', async () => { + el.loading = false; + await el.updateComplete; + expect(el.hasAttribute('loading')).toBe(false); + + el.loading = true; + await el.updateComplete; + expect(el.hasAttribute('loading')).toBe(true); + }); + + await step('open reflects to attribute after mutation', async () => { + el.open = true; + await el.updateComplete; + expect(el.hasAttribute('open')).toBe(true); + + el.open = false; + await el.updateComplete; + expect(el.hasAttribute('open')).toBe(false); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/SystemMessage.ts b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/SystemMessage.ts new file mode 100644 index 00000000000..b62c844bbe0 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/SystemMessage.ts @@ -0,0 +1,63 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import styles from './system-message.css'; + +/** + * Layout container for a single system (AI) reply: status, body, feedback, sources, and suggestions. + * + * **Presentation order is fixed** by this element's shadow tree: **status -> default content -> feedback -> sources -> suggestions**, + * regardless of the order slotted nodes appear in the host DOM (each child must use the correct **`slot`** name). + * + * Slots: + * - `status` — `<swc-response-status>` thinking/complete indicator + * - default slot — System reply body (semantic HTML; typography after API table on System message Storybook docs) + * - `feedback` — `<swc-message-feedback>` positive/negative feedback + * - `sources` — `<swc-message-sources>` collapsible source list + * - `suggestions` — `<swc-message-suggestions>` follow-up suggestion chips + * + * Wrap with `<swc-conversation-turn type="incoming">` for column alignment in the thread. + * + * @element swc-system-message + * @slot - System reply body (semantic HTML; typography after API table on System message Storybook docs) + * @slot status - Response status indicator (thinking / complete) + * @slot feedback - Positive / negative feedback controls + * @slot sources - Collapsible list of sources + * @slot suggestions - Follow-up suggestion chips (rendered outside the main body) + */ +export class SystemMessage extends SpectrumElement { + public static override get styles(): CSSResultArray { + return [styles]; + } + + protected override render(): TemplateResult { + return html` + <div class="swc-SystemMessage"> + <div class="swc-SystemMessage-body"> + <div class="swc-SystemMessage-output"> + <slot name="status"></slot> + <div class="swc-SystemMessage-content"> + <slot></slot> + <slot name="feedback"></slot> + </div> + </div> + <slot name="sources"></slot> + </div> + <slot name="suggestions"></slot> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/index.ts new file mode 100644 index 00000000000..b8ee7d8e2ff --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { SystemMessage } from './SystemMessage.js'; + +export * from './SystemMessage.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-system-message': SystemMessage; + } +} + +defineElement('swc-system-message', SystemMessage); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/stories/system-message.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/stories/system-message.stories.ts new file mode 100644 index 00000000000..c21beaa6340 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/stories/system-message.stories.ts @@ -0,0 +1,232 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../index.js'; +import '../../conversation-turn/index.js'; +import '../../message-feedback/index.js'; +import '../../message-sources/index.js'; +import '../../message-suggestions/index.js'; +import '../../response-status/index.js'; + +import '../../system-prose-demo.css'; + +// ──────────────── +// METADATA +// ──────────────── + +const systemMessageSlotDocs = ` +### Default slot — reply body + +Put the AI reply in the **default slot** as **semantic HTML** (and optional app components) styled with Spectrum **\`var(--swc-*)\`** tokens. + +#### Markup + +- **\`<p>\`** for body copy; reset vertical margins so stacked paragraphs match design. +- **\`<ul>\`** / **\`<ol>\`** for lists; set **margin** and **padding-inline-start** to match design specs. +- **Headings** (\`<h2>\`–\`<h4>\`) only when the outline matters for assistive tech; otherwise a **\`<p>\`** with stronger **font-size** / **font-weight** for in-flow section titles. +- **\`<a href>\`** for links; accent colour and underline. + +#### Typography (tokens) + +| Role | Suggested variables | +| --- | --- | +| Body | \`--swc-font-size-200\`, \`--swc-line-height-font-size-200\`, \`--swc-regular-font-weight\`, \`--swc-gray-800\`, \`--swc-sans-serif-font\` | +| In-flow emphasis | \`--swc-font-size-300\` or \`--swc-font-size-400\`, heavier weight, \`--swc-gray-900\` | +| Links | \`--swc-accent-color-900\`, \`text-decoration: underline\`, \`text-underline-offset: 2px\` | +`.trim(); + +const { args, argTypes, template } = getStorybookHelpers('swc-system-message'); + +const slotStatusRich = `<swc-response-status slot="status" open><span slot="reasoning">The user said make a presentation deck but didn't specify duration of deck. Assumption is a brief presentation. I should check previous Hilton executive presentation decks and extract the structure.</span></swc-response-status>`; + +const slotMessageRich = `<div class="swc-conversationalAi-systemProse"><p>According to the assets, there is a clear journey from beginning to end. Let's start with overarching themes and build from there.</p><p style="font-size:var(--swc-font-size-400);font-weight:800;line-height:var(--swc-line-height-font-size-400);color:var(--swc-gray-900);margin:0;">Big idea/ core narrative: The warmth of welcome</p><p>Hospitality begins the moment our customers set foot off their plane. We are more than accommodation, and we service a diverse base. We hope to be the anchor and bounce board for all who stay with us.</p><p style="font-size:var(--swc-font-size-300);font-weight:800;line-height:var(--swc-line-height-font-size-300);color:var(--swc-gray-900);margin:0;">Belonging happens at Hilton</p><p>We strive to be familiar but exceed expectations. These assets highlight how belonging is personified.</p><p style="font-size:var(--swc-font-size-300);font-weight:800;line-height:var(--swc-line-height-font-size-300);color:var(--swc-gray-900);margin:0;">We are more than accommodation</p><ul><li>Airport pick up service</li><li>Local recommendations</li><li>Everyday excursions</li><li>Customizable experience</li></ul></div>`; + +const slotFeedback = `<swc-message-feedback slot="feedback"></swc-message-feedback>`; + +const slotSourcesRich = `<swc-message-sources slot="sources"><li><a href="#">Adobe Experience Manager documentation</a></li><li><a href="#">Creative Cloud release notes 2026</a></li><li><a href="#">Firefly API getting started guide</a></li></swc-message-sources>`; + +const slotSuggestionsRich = `<swc-message-suggestions slot="suggestions" title="What would you like to do next?"><span>Create a year-over-year growth chart for the next decade</span><span>Generate a congratulatory poster</span><span>Summarize development pipeline</span></swc-message-suggestions>`; + +const richSlots = { + 'status-slot': slotStatusRich, + 'default-slot': slotMessageRich, + 'feedback-slot': slotFeedback, + 'sources-slot': slotSourcesRich, + 'suggestions-slot': slotSuggestionsRich, +}; + +const withSystemTurn = (story: () => unknown) => html` + <swc-conversation-turn type="incoming">${story()}</swc-conversation-turn> +`; + +/** + * Layout container for one system reply (status, body, feedback, sources, suggestions). + * **Presentation order is fixed** by the component (shadow slot order); host children may appear in any order if + * each uses the correct **`slot`** name. For thread alignment, wrap in `<swc-conversation-turn type="incoming">`. + * + * **Default slot:** semantic HTML and typography guidance appears **after the API table** on this page. + */ +const meta: Meta = { + title: 'Conversational AI/System message', + component: 'swc-system-message', + args: { + ...args, + ...richSlots, + }, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'Layout container for a single system (AI) reply.', + afterApi: systemMessageSlotDocs, + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + decorators: [withSystemTurn], + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + decorators: [withSystemTurn], + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * ### Fixed layout order + * + * The shell **always** paints **status -> default content -> feedback -> sources -> suggestions**, no matter how you order + * children under `<swc-system-message>`, as long as each uses the right **`slot`** name. + * + * ### Slots + * + * - **Default slot** — System reply body (semantic HTML; see **after API** on this docs page) + * - **`status`** — `<swc-response-status>` + * - **`feedback`** — `<swc-message-feedback>` + * - **`sources`** — `<swc-message-sources>` + * - **`suggestions`** — `<swc-message-suggestions>` + */ +export const Anatomy: Story = { + args: { + 'status-slot': `<swc-response-status slot="status"></swc-response-status>`, + 'default-slot': `<div class="swc-conversationalAi-systemProse"><p>Here is the AI-generated response content.</p></div>`, + 'feedback-slot': slotFeedback, + 'sources-slot': `<swc-message-sources slot="sources"><li><a href="#">Source one</a></li></swc-message-sources>`, + 'suggestions-slot': `<swc-message-suggestions slot="suggestions" title="What would you like to do next?"><span>Follow up suggestion one</span><span>Follow up suggestion two</span></swc-message-suggestions>`, + }, + decorators: [withSystemTurn], + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * While the AI is generating a response, slot `<swc-response-status loading>` + * into the `status` slot. Once generation is complete, remove `loading`. + */ +export const Loading: Story = { + render: () => html` + <div style="display:flex;flex-direction:column;gap:48px;"> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-conversation-turn type="incoming"> + <swc-system-message> + <swc-response-status slot="status" loading></swc-response-status> + </swc-system-message> + </swc-conversation-turn> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Generating response + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-conversation-turn type="incoming"> + <swc-system-message> + <swc-response-status slot="status"></swc-response-status> + <div class="swc-conversationalAi-systemProse"> + <p> + According to the assets, there is a clear journey from beginning + to end. + </p> + </div> + <swc-message-feedback slot="feedback"></swc-message-feedback> + <swc-message-sources slot="sources"> + <li><a href="#">Adobe Experience Manager documentation</a></li> + </swc-message-sources> + </swc-system-message> + </swc-conversation-turn> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Response complete + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-system-message>` element provides a layout container. + * Accessibility is delegated to the slotted sub-components: + * + * - `<swc-response-status>` announces generation state via `role="status"` + * - `<swc-message-feedback>` exposes `role="radiogroup"` with labelled radio options + * - `<swc-message-sources>` uses `aria-expanded` on its disclosure toggle + * - `<swc-message-suggestions>` chips are native focusable `<button>` elements + * + * ### Best practices + * + * - Use semantic HTML in the **default slot** (paragraphs, lists, headings) for screen reader clarity + * - Ensure source links have descriptive text + */ +export const Accessibility: Story = { + args: { + 'status-slot': `<swc-response-status slot="status"></swc-response-status>`, + 'default-slot': `<div class="swc-conversationalAi-systemProse"><p>According to the assets, there is a clear journey from beginning to end. Let's start with overarching themes and build from there.</p></div>`, + 'feedback-slot': slotFeedback, + 'sources-slot': `<swc-message-sources slot="sources" open><li><a href="#">Adobe Experience Manager documentation</a></li><li><a href="#">Creative Cloud release notes 2026</a></li></swc-message-sources>`, + 'suggestions-slot': `<swc-message-suggestions slot="suggestions" title="What would you like to do next?"><span>Create a year-over-year growth chart for the next decade</span><span>Generate a congratulatory poster</span></swc-message-suggestions>`, + }, + decorators: [withSystemTurn], + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/system-message.css b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/system-message.css new file mode 100644 index 00000000000..1240ee2c2e3 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/system-message.css @@ -0,0 +1,62 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +:host { + display: block; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* ───────────────────────────────────── + Outer wrapper — status + body + suggestions + ───────────────────────────────────── */ + +.swc-SystemMessage { + display: flex; + flex-direction: column; + gap: 16px; +} + +/* ───────────────────────────────────── + Body — output content + sources + ───────────────────────────────────── */ + +.swc-SystemMessage-body { + display: flex; + flex-direction: column; + gap: 8px; +} + +/* ───────────────────────────────────── + Output — status + content wrapper + ───────────────────────────────────── */ + +.swc-SystemMessage-output { + display: flex; + flex-direction: column; + gap: 16px; +} + +/* ───────────────────────────────────── + Content — message + feedback + ───────────────────────────────────── */ + +.swc-SystemMessage-content { + display: flex; + flex-direction: column; + gap: 8px; + padding-inline: 16px; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.a11y.spec.ts new file mode 100644 index 00000000000..3ce07873877 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.a11y.spec.ts @@ -0,0 +1,31 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +test.describe('SystemMessage - ARIA Snapshots', () => { + test('should have correct accessibility tree', async ({ page }) => { + const root = await gotoStory( + page, + 'conversational-ai-system-message--overview', + 'swc-system-message' + ); + await expect(root).toMatchAriaSnapshot(` + - text: /warmth of welcome/ + - radiogroup "Response feedback": + - radio "Positive response" [checked=false] + - radio "Negative response" [checked=false] + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.test.ts new file mode 100644 index 00000000000..7bc16645830 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-message/test/system-message.test.ts @@ -0,0 +1,45 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { meta, Overview } from '../stories/system-message.stories.js'; +import { SystemMessage } from '../SystemMessage.js'; + +export default { + ...meta, + title: 'Conversational AI/System message/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<SystemMessage>( + canvasElement, + 'swc-system-message' + ); + + await step('element is defined and rendered', async () => { + expect(el).toBeDefined(); + expect(el.shadowRoot).toBeTruthy(); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/system-prose-demo.css b/2nd-gen/packages/swc/patterns/conversational-ai/system-prose-demo.css new file mode 100644 index 00000000000..e6d94b2b823 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/system-prose-demo.css @@ -0,0 +1,43 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/** + * Reference styles for system prose inside `swc-system-message` default slot. + * This is not a component — Storybook imports it for demos; products should copy or map + * equivalent rules to their design tokens. + */ +.swc-conversationalAi-systemProse { + display: flex; + flex-direction: column; + gap: 8px; + font-family: var(--swc-sans-serif-font); + font-size: var(--swc-font-size-200); + font-weight: var(--swc-regular-font-weight); + line-height: var(--swc-line-height-font-size-200); + color: var(--swc-gray-800); +} + +.swc-conversationalAi-systemProse p { + margin: 0; +} + +.swc-conversationalAi-systemProse ul, +.swc-conversationalAi-systemProse ol { + padding-inline-start: 20px; + margin: 0; +} + +.swc-conversationalAi-systemProse a { + color: var(--swc-accent-color-900); + text-decoration: underline; + text-underline-offset: 2px; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/UserMessage.ts b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/UserMessage.ts new file mode 100644 index 00000000000..54e96dca4d9 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/UserMessage.ts @@ -0,0 +1,100 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { state } from 'lit/decorators.js'; + +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; + +import styles from './user-message.css'; + +/** + * User-authored conversation bubble for conversational AI pattern exploration. + * + * @element swc-user-message + * @slot - Message content. Slotted `swc-conversation-artifact[variant]` drives bubble layout inference. + */ +export class UserMessage extends SpectrumElement { + @state() + private _contentKind: 'copy' | 'card' | 'media' = 'copy'; + + public static override get styles(): CSSResultArray { + return [styles]; + } + + private _elementHasArtifactVariant( + element: Element, + variant: 'card' | 'media' + ): boolean { + if (element.matches(`swc-conversation-artifact[variant="${variant}"]`)) { + return true; + } + return ( + element.querySelector(`swc-conversation-artifact[variant="${variant}"]`) !== + null + ); + } + + private _inferContentKind(slot?: HTMLSlotElement): 'copy' | 'card' | 'media' { + const defaultSlot = + slot ?? this.shadowRoot?.querySelector<HTMLSlotElement>('slot'); + const assigned = defaultSlot?.assignedElements({ flatten: true }) ?? []; + + if ( + assigned.some((element) => + this._elementHasArtifactVariant(element, 'media') + ) + ) { + return 'media'; + } + + if ( + assigned.some((element) => + this._elementHasArtifactVariant(element, 'card') + ) + ) { + return 'card'; + } + + return 'copy'; + } + + private _syncContentKind(slot?: HTMLSlotElement): void { + const nextKind = this._inferContentKind(slot); + if (nextKind === this._contentKind) { + return; + } + + this._contentKind = nextKind; + this.requestUpdate(); + } + + private _handleDefaultSlotChange(event: Event): void { + this._syncContentKind(event.target as HTMLSlotElement); + } + + protected override firstUpdated(): void { + this._syncContentKind(); + } + + protected override updated(): void { + this.setAttribute('data-content-kind', this._contentKind); + } + + protected override render(): TemplateResult { + return html` + <div class="swc-UserMessage"> + <slot @slotchange=${this._handleDefaultSlotChange}></slot> + </div> + `; + } +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/index.ts new file mode 100644 index 00000000000..f732fdb5533 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/index.ts @@ -0,0 +1,24 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { UserMessage } from './UserMessage.js'; + +export * from './UserMessage.js'; + +declare global { + interface HTMLElementTagNameMap { + 'swc-user-message': UserMessage; + } +} + +defineElement('swc-user-message', UserMessage); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/stories/user-message.stories.ts b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/stories/user-message.stories.ts new file mode 100644 index 00000000000..977b0628df0 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/stories/user-message.stories.ts @@ -0,0 +1,204 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { html } from 'lit'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; +import { getStorybookHelpers } from '@wc-toolkit/storybook-helpers'; + +import '../../conversation-artifact/index.js'; +import '../../conversation-turn/index.js'; +import '../index.js'; + +// ──────────────── +// METADATA +// ──────────────── + +const { args, argTypes, template } = getStorybookHelpers('swc-user-message'); +delete (args as Record<string, unknown>).content; +delete (argTypes as Record<string, unknown>).content; + +// Wraps a single swc-user-message in a conversation turn for proper alignment. +const withUserTurn = (story: () => unknown) => + html`<swc-conversation-turn type="outgoing" + >${story()}</swc-conversation-turn + >`; + +/** + * User-authored message bubble. Use inside `<swc-conversation-turn type="outgoing">` for thread alignment. + */ +const meta: Meta = { + title: 'Conversational AI/User message', + component: 'swc-user-message', + args, + argTypes, + render: (args) => template(args), + parameters: { + docs: { + subtitle: 'User-submitted message rendered in the thread.', + }, + layout: 'padded', + }, + excludeStories: ['meta'], +}; + +export default meta; + +// ──────────────────── +// AUTODOCS STORY +// ──────────────────── + +export const Playground: Story = { + args: { + 'default-slot': + 'Can you help me create a 45-minute presentation, with animations, for an executive update?', + }, + decorators: [withUserTurn], + tags: ['autodocs', 'dev'], +}; + +// ────────────────────────────── +// OVERVIEW STORY +// ────────────────────────────── + +export const Overview: Story = { + args: { + 'default-slot': + 'Can you help me create a 45-minute presentation, with animations, for an executive update?', + }, + decorators: [withUserTurn], + tags: ['overview'], +}; + +// ────────────────────────── +// ANATOMY STORY +// ────────────────────────── + +/** + * A user message consists of: + * + * 1. **Bubble** — Rounded container with a neutral gray background (`gray-50`) + * 2. **Default slot** — The message content: plain text, a card attachment, or media-first content + */ +export const Anatomy: Story = { + args: { + 'default-slot': 'Can you help me create a 45-minute presentation?', + }, + decorators: [withUserTurn], + tags: ['anatomy'], +}; + +// ────────────────────────── +// OPTIONS STORIES +// ────────────────────────── + +/** + * Bubble sizing and padding are inferred from slotted content: + * + * - **Copy** — default text-only content + * - **Card** — inferred when slotted content contains `swc-conversation-artifact[variant="card"]` + * - **Media** — inferred when slotted content contains `swc-conversation-artifact[variant="media"]` + */ +export const Content: Story = { + render: () => html` + <div + style="display:flex;flex-direction:column;gap:32px;max-inline-size:640px;" + > + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-conversation-turn type="outgoing"> + <swc-user-message> + Can you help me create a 45-minute presentation, with animations, for + an executive update? + </swc-user-message> + </swc-conversation-turn> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Copy + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-conversation-turn type="outgoing"> + <swc-user-message> + <swc-conversation-artifact variant="card"> + <div + slot="thumbnail" + style="inline-size:32px;block-size:32px;border-radius:3px;background:var(--swc-gray-200);flex-shrink:0;" + role="img" + aria-label="File" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </swc-user-message> + </swc-conversation-turn> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Card + </span> + </div> + <div style="display:flex;flex-direction:column;gap:8px;"> + <swc-conversation-turn type="outgoing"> + <swc-user-message> + <div style="inline-size:240px;"> + <swc-conversation-artifact variant="media"> + <div + slot="thumbnail" + style="inline-size:100%;block-size:196px;background:linear-gradient(135deg,#a78bfa,#f472b6);" + role="img" + aria-label="Campaign preview" + ></div> + <span slot="title">Hilton commercial assets</span> + <span slot="subtitle">2026</span> + </swc-conversation-artifact> + </div> + </swc-user-message> + </swc-conversation-turn> + <span + style="font-family:var(--swc-sans-serif-font);font-size:var(--swc-font-size-75);color:var(--swc-gray-600);" + > + Media + </span> + </div> + </div> + `, + parameters: { 'section-order': 1 }, + tags: ['options'], +}; + +// ──────────────────────────────── +// ACCESSIBILITY STORY +// ──────────────────────────────── + +/** + * ### Features + * + * The `<swc-user-message>` element implements the following accessibility features: + * + * #### Semantic structure + * + * - The bubble is rendered as a `<div>` acting as a visual container + * - The default slot accepts any content; consumers are responsible for providing meaningful text alternatives when slotting non-text content (cards, media) + * + * ### Best practices + * + * - Ensure message text is descriptive and self-contained + * - For slotted artifacts, ensure titles/subtitles and `aria-label`/`alt` text are present for previews + */ +export const Accessibility: Story = { + args: { + 'default-slot': + 'Can you help me create a 45-minute presentation, with animations, for an executive update?', + }, + decorators: [withUserTurn], + tags: ['a11y'], +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.a11y.spec.ts b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.a11y.spec.ts new file mode 100644 index 00000000000..5b5c5e629fa --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.a11y.spec.ts @@ -0,0 +1,39 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect, test } from '@playwright/test'; + +import { gotoStory } from '../../../../utils/a11y-helpers.js'; + +/** + * Accessibility tests for UserMessage pattern (2nd Generation) + * + * ARIA snapshot tests validate the accessibility tree structure. + * aXe WCAG compliance and color contrast validation are run via + * test-storybook (see .storybook/test-runner.ts). Both are included + * in the `test:a11y` command. + */ + +test.describe('UserMessage - ARIA Snapshots', () => { + test('should have correct accessibility tree for default user message', async ({ + page, + }) => { + const root = await gotoStory( + page, + 'conversational-ai-user-message--overview', + 'swc-user-message' + ); + await expect(root).toMatchAriaSnapshot(` + - text: /Can you help me/ + `); + }); +}); diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.test.ts b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.test.ts new file mode 100644 index 00000000000..2b04b1d48ee --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/test/user-message.test.ts @@ -0,0 +1,86 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import { expect } from '@storybook/test'; +import type { Meta, StoryObj as Story } from '@storybook/web-components'; + +import '../../conversation-artifact/index.js'; +import '../index.js'; + +import { getComponent } from '../../../../utils/test-utils.js'; +import { meta, Overview } from '../stories/user-message.stories.js'; +import { UserMessage } from '../UserMessage.js'; + +export default { + ...meta, + title: 'Conversational AI/User message/Tests', + parameters: { + ...meta.parameters, + docs: { disable: true, page: null }, + }, + tags: ['!autodocs', 'dev'], +} as Meta; + +export const OverviewTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<UserMessage>( + canvasElement, + 'swc-user-message' + ); + + await step('infers copy content by default', async () => { + expect(el.getAttribute('data-content-kind')).toBe('copy'); + }); + }, +}; + +export const SlotInferenceTest: Story = { + ...Overview, + play: async ({ canvasElement, step }) => { + const el = await getComponent<UserMessage>( + canvasElement, + 'swc-user-message' + ); + + await step('infers card from slotted card artifact', async () => { + el.innerHTML = ` + <swc-conversation-artifact variant="card"> + <span slot="title">Brand guidelines</span> + </swc-conversation-artifact> + `; + await el.updateComplete; + await Promise.resolve(); + expect(el.getAttribute('data-content-kind')).toBe('card'); + }); + + await step('infers media from slotted media artifact', async () => { + el.innerHTML = ` + <div> + <swc-conversation-artifact variant="media"> + <div slot="thumbnail" role="img" aria-label="Preview"></div> + </swc-conversation-artifact> + </div> + `; + await el.updateComplete; + await Promise.resolve(); + expect(el.getAttribute('data-content-kind')).toBe('media'); + }); + + await step('falls back to copy for text-only slot content', async () => { + el.innerHTML = `Can you summarize this document?`; + await el.updateComplete; + await Promise.resolve(); + expect(el.getAttribute('data-content-kind')).toBe('copy'); + }); + }, +}; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/user-message/user-message.css b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/user-message.css new file mode 100644 index 00000000000..063a0be3a3c --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/user-message/user-message.css @@ -0,0 +1,67 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/* Sizing per inferred content type sourced from Figma spec (node 5-2328), full-screen modality. + * + * copy — fills available column width, capped at 536px (text reflows naturally) + * card — shrinks to card content, capped at 528px, min 272px + * media — shrinks to media content, min 272px + * + * Content kind is inferred from slotted markup and exposed via + * `data-content-kind` on host: + * - media: any slotted `swc-conversation-artifact[variant="media"]` + * - card: any slotted `swc-conversation-artifact[variant="card"]` (when no media) + * - copy: default fallback + */ + +:host { + display: block; + inline-size: 100%; /* copy fills the full column width */ + max-inline-size: 536px; +} + +/* Card: fixed 324px per Figma spec (card content is always 308px = 324px - 2×8px padding) */ +:host([data-content-kind='card']) { + inline-size: 324px; + min-inline-size: 272px; + max-inline-size: 528px; +} + +/* Media: shrinks to preview content + padding; min 272px (240px image + 2×16px padding) */ +:host([data-content-kind='media']) { + inline-size: fit-content; + min-inline-size: 272px; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +.swc-UserMessage { + padding-block: 8px; + padding-inline: 16px; + font-family: token("sans-serif-font"); + font-size: token("font-size-200"); + font-weight: token("regular-font-weight"); + line-height: token("line-height-200"); + color: token("gray-800"); + background: token("gray-50"); + border-radius: 10px; +} + +/* Card content uses tighter padding to frame the card thumbnail/metadata */ +:host([data-content-kind='card']) .swc-UserMessage { + padding-block: 4px; + padding-inline: 8px; +} diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/check-circle.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/check-circle.svg new file mode 100644 index 00000000000..e53fd6a7c8c --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/check-circle.svg @@ -0,0 +1,4 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M10 18.75C5.1748 18.75 1.25 14.8252 1.25 10C1.25 5.1748 5.1748 1.25 10 1.25C14.8252 1.25 18.75 5.1748 18.75 10C18.75 14.8252 14.8252 18.75 10 18.75ZM10 2.75C6.00195 2.75 2.75 6.00195 2.75 10C2.75 13.998 6.00195 17.25 10 17.25C13.998 17.25 17.25 13.998 17.25 10C17.25 6.00195 13.998 2.75 10 2.75Z" fill="#292929"/> +<path d="M9.22261 13.5C9.0107 13.5 8.80757 13.4101 8.66499 13.2519L6.15425 10.4599C5.87691 10.1514 5.9023 9.67772 6.20991 9.40038C6.51752 9.12304 6.99116 9.14843 7.26948 9.45604L9.16303 11.5625L12.6503 6.80663C12.8935 6.47265 13.3613 6.39745 13.6982 6.6455C14.0322 6.88964 14.1044 7.35937 13.8593 7.69335L9.82708 13.1933C9.69427 13.376 9.48528 13.4883 9.2597 13.499C9.24798 13.5 9.23531 13.5 9.22261 13.5Z" fill="#292929"/> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/chevron-up.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/chevron-up.svg new file mode 100644 index 00000000000..7d581615b5a --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/chevron-up.svg @@ -0,0 +1,8 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_190" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20"> +<path d="M14.5273 7.4668L10.5244 3.46973C10.2305 3.17578 9.75587 3.17774 9.46387 3.46973L5.4668 7.4668C5.17383 7.75977 5.17383 8.23438 5.4668 8.52735C5.61328 8.67383 5.80469 8.74708 5.99707 8.74708C6.18945 8.74708 6.38086 8.67384 6.52734 8.52735L9.25097 5.80372V15.75C9.25097 16.1641 9.58691 16.5 10.001 16.5C10.415 16.5 10.751 16.1641 10.751 15.75V5.81616L13.4668 8.52734C13.7607 8.82129 14.2353 8.81933 14.5273 8.52734C14.8203 8.23437 14.8203 7.7588 14.5273 7.4668Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_190)"> +<rect width="20" height="20" fill="white"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/cross.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/cross.svg new file mode 100644 index 00000000000..86db626dc5f --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/cross.svg @@ -0,0 +1,10 @@ +<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_6481_6666)"> +<path d="M6.28901 5L9.21143 2.07715C9.56739 1.7207 9.56739 1.14356 9.21143 0.788087C8.85498 0.432617 8.27784 0.432617 7.92237 0.788087L5.00001 3.71094L2.07765 0.788087C1.72218 0.432617 1.14503 0.432617 0.788586 0.788087C0.432626 1.14356 0.432626 1.72071 0.788586 2.07715L3.71101 5L0.788576 7.92285C0.432616 8.2793 0.432616 8.85644 0.788576 9.21191C0.966796 9.38964 1.19971 9.47851 1.43311 9.47851C1.66651 9.47851 1.89991 9.38964 2.07764 9.21191L5 6.28906L7.92236 9.21191C8.10009 9.38964 8.33349 9.47851 8.56689 9.47851C8.80029 9.47851 9.0332 9.38964 9.21142 9.21191C9.56738 8.85644 9.56738 8.27929 9.21142 7.92285L6.28901 5Z" fill="#131313"/> +</g> +<defs> +<clipPath id="clip0_6481_6666"> +<rect width="10" height="10" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/index.ts b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/index.ts new file mode 100644 index 00000000000..25cc51dff19 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/index.ts @@ -0,0 +1,114 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +import { html, TemplateResult } from 'lit'; + +/** Plus icon — used for the upload / add attachment button. */ +export const PlusIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M16.25 9.25H10.75V3.75C10.75 3.33594 10.4141 3 10 3C9.58594 3 9.25 3.33594 9.25 3.75V9.25H3.75C3.33594 9.25 3 9.58594 3 10C3 10.4141 3.33594 10.75 3.75 10.75H9.25V16.25C9.25 16.6641 9.58594 17 10 17C10.4141 17 10.75 16.6641 10.75 16.25V10.75H16.25C16.6641 10.75 17 10.4141 17 10C17 9.58594 16.6641 9.25 16.25 9.25Z" + /> + </svg> +`; + +/** Cross icon — used for dismissing an uploaded artifact. */ +export const CrossIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10"> + <path + fill="currentColor" + d="M6.28901 5L9.21143 2.07715C9.56739 1.7207 9.56739 1.14356 9.21143 0.788087C8.85498 0.432617 8.27784 0.432617 7.92237 0.788087L5.00001 3.71094L2.07765 0.788087C1.72218 0.432617 1.14503 0.432617 0.788586 0.788087C0.432626 1.14356 0.432626 1.72071 0.788586 2.07715L3.71101 5L0.788576 7.92285C0.432616 8.2793 0.432616 8.85644 0.788576 9.21191C0.966796 9.38964 1.19971 9.47851 1.43311 9.47851C1.66651 9.47851 1.89991 9.38964 2.07764 9.21191L5 6.28906L7.92236 9.21191C8.10009 9.38964 8.33349 9.47851 8.56689 9.47851C8.80029 9.47851 9.0332 9.38964 9.21142 9.21191C9.56738 8.85644 9.56738 8.27929 9.21142 7.92285L6.28901 5Z" + /> + </svg> +`; + +/** Stop icon — used for the stop-generating button. */ +export const StopIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M13.75 4H6.25C5.00736 4 4 5.00736 4 6.25V13.75C4 14.9926 5.00736 16 6.25 16H13.75C14.9926 16 16 14.9926 16 13.75V6.25C16 5.00736 14.9926 4 13.75 4Z" + /> + </svg> +`; + +/** Chevron-up icon — used for the send / submit button. */ +export const ChevronUpIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M14.5273 7.4668L10.5244 3.46973C10.2305 3.17578 9.75587 3.17774 9.46387 3.46973L5.4668 7.4668C5.17383 7.75977 5.17383 8.23438 5.4668 8.52735C5.61328 8.67383 5.80469 8.74708 5.99707 8.74708C6.18945 8.74708 6.38086 8.67384 6.52734 8.52735L9.25097 5.80372V15.75C9.25097 16.1641 9.58691 16.5 10.001 16.5C10.415 16.5 10.751 16.1641 10.751 15.75V5.81616L13.4668 8.52734C13.7607 8.82129 14.2353 8.81933 14.5273 8.52734C14.8203 8.23437 14.8203 7.7588 14.5273 7.4668Z" + /> + </svg> +`; + +/** Three-dots icon — used for the loading / AI-thinking state. */ +export const ThreeDotsIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> + <path + fill="currentColor" + d="M12 13.2174C12.6628 13.2174 13.2 12.6801 13.2 12.0174C13.2 11.3546 12.6628 10.8174 12 10.8174C11.3373 10.8174 10.8 11.3546 10.8 12.0174C10.8 12.6801 11.3373 13.2174 12 13.2174Z" + /> + <path + fill="currentColor" + d="M7.2 13.2174C7.86274 13.2174 8.4 12.6801 8.4 12.0174C8.4 11.3546 7.86274 10.8174 7.2 10.8174C6.53726 10.8174 6 11.3546 6 12.0174C6 12.6801 6.53726 13.2174 7.2 13.2174Z" + /> + <path + fill="currentColor" + d="M16.8 13.2174C17.4627 13.2174 18 12.6801 18 12.0174C18 11.3546 17.4627 10.8174 16.8 10.8174C16.1372 10.8174 15.6 11.3546 15.6 12.0174C15.6 12.6801 16.1372 13.2174 16.8 13.2174Z" + /> + </svg> +`; + +/** Check-circle icon — used for "response generated" status. */ +export const CheckCircleIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M10 18.75C5.1748 18.75 1.25 14.8252 1.25 10C1.25 5.1748 5.1748 1.25 10 1.25C14.8252 1.25 18.75 5.1748 18.75 10C18.75 14.8252 14.8252 18.75 10 18.75ZM10 2.75C6.00195 2.75 2.75 6.00195 2.75 10C2.75 13.998 6.00195 17.25 10 17.25C13.998 17.25 17.25 13.998 17.25 10C17.25 6.00195 13.998 2.75 10 2.75Z" + /> + <path + fill="currentColor" + d="M9.22261 13.5C9.0107 13.5 8.80757 13.4101 8.66499 13.2519L6.15425 10.4599C5.87691 10.1514 5.9023 9.67772 6.20991 9.40038C6.51752 9.12304 6.99116 9.14843 7.26948 9.45604L9.16303 11.5625L12.6503 6.80663C12.8935 6.47265 13.3613 6.39745 13.6982 6.6455C14.0322 6.88964 14.1044 7.35937 13.8593 7.69335L9.82708 13.1933C9.69427 13.376 9.48528 13.4883 9.2597 13.499C9.24798 13.5 9.23531 13.5 9.22261 13.5Z" + /> + </svg> +`; + +/** Thumbs-up icon — used for positive message feedback. */ +export const ThumbUpIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M18.5303 8.22461C18.019 7.45801 17.1636 7 16.2422 7H13.1973C12.8101 7 12.4819 6.69727 12.4502 6.31152L12.25 3.93164C12.2519 3.87988 12.248 3.79394 12.2393 3.74316C12.1279 3.08984 11.8667 1.55957 10.0649 1.55957C8.583 1.55957 8.27538 3.22852 7.97802 4.84375C7.63818 6.69043 7.31982 7.99707 6.31786 8H4.24999C3.00927 8 1.99999 9.00977 1.99999 10.25V15.75C1.99999 16.9902 3.00927 18 4.24999 18H11.75C11.7842 18 11.8179 17.9981 11.8506 17.9932H13.2905C14.8091 17.9922 16.167 17.085 16.7505 15.6836L18.7808 10.8066C19.1352 9.95605 19.0415 8.99121 18.5303 8.22461ZM3.5 15.75V10.25C3.5 9.83691 3.83643 9.5 4.25 9.5H5.25V16.5H4.25C3.83643 16.5 3.5 16.1631 3.5 15.75ZM17.396 10.2305L15.3657 15.1074C15.0156 15.9482 14.2007 16.4922 13.2901 16.4932H11.75C11.7158 16.4932 11.6821 16.4951 11.6494 16.5H6.75001V9.46655C8.70582 9.1665 9.13496 6.84277 9.45362 5.11523C9.57618 4.44824 9.80518 3.20605 10.065 3.05957C10.4258 3.05957 10.5942 3.05957 10.7505 3.9375C10.751 3.95215 10.7515 3.9668 10.7525 3.97852L10.9551 6.43457C11.0503 7.59277 12.0352 8.5 13.1973 8.5H16.2422C16.6675 8.5 17.0464 8.70312 17.2822 9.05664C17.5181 9.41016 17.5596 9.83789 17.396 10.2305Z" + /> + </svg> +`; + +/** Thumbs-down icon — used for negative message feedback. */ +export const ThumbDownIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> + <path + fill="currentColor" + d="M18.7808 9.19434L16.7505 4.31739C16.165 2.91114 14.8071 2.00098 13.29 2.00001H4.25C3.00928 2.00001 2 3.00978 2 4.25099V9.75099C2 10.9912 3.00928 12.001 4.25 12.001H6.31592C7.30567 12.0039 7.60205 13.2471 7.94043 15.1445C8.22119 16.7178 8.53906 18.5 10.0649 18.5C11.9155 18.5 12.1279 17.0293 12.2441 16.2246C12.2456 16.2129 12.4502 13.6895 12.4502 13.6895C12.4819 13.3037 12.8101 13.001 13.1973 13.001H16.2422C17.1636 13.001 18.019 12.543 18.5303 11.7764C19.0415 11.0098 19.1353 10.0449 18.7808 9.19434ZM3.5 9.75098V4.25098C3.5 3.83692 3.83643 3.5 4.25 3.5H5.25V10.501H4.25C3.83643 10.501 3.5 10.1641 3.5 9.75098ZM17.2822 10.9443C17.0464 11.2979 16.6675 11.501 16.2422 11.501H13.1973C12.0352 11.501 11.0503 12.4082 10.9551 13.5674C10.9551 13.5674 10.7603 15.9814 10.7578 16.0244C10.6167 17 10.4985 16.9863 10.0444 16.998C9.77588 16.8916 9.53369 15.5342 9.41699 14.8809C9.10949 13.1562 8.69446 10.8372 6.75 10.5352V3.5H13.2895C14.1987 3.50098 15.0137 4.04785 15.3657 4.89355L17.396 9.7705C17.5596 10.1631 17.5181 10.5908 17.2822 10.9443Z" + /> + </svg> +`; + +/** Arrow-curved icon — used for suggestion chips. */ +export const ArrowCurvedIcon = (): TemplateResult => html` + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"> + <path + fill="currentColor" + d="M13.7929 6.20711L10.7929 3.20711C10.4024 2.81658 9.76923 2.81658 9.37871 3.20711C8.98818 3.59763 8.98818 4.2308 9.37871 4.62132L10.7574 6H5.5C3.567 6 2 7.567 2 9.5V12C2 12.5523 2.44772 13 3 13C3.55228 13 4 12.5523 4 12V9.5C4 8.67157 4.67157 8 5.5 8H10.7574L9.37871 9.37868C8.98818 9.76921 8.98818 10.4024 9.37871 10.7929C9.76923 11.1834 10.4024 11.1834 10.7929 10.7929L13.7929 7.79289C14.1834 7.40237 14.1834 6.76921 13.7929 6.37868V6.20711Z" + /> + </svg> +`; diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/plus.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/plus.svg new file mode 100644 index 00000000000..eb301fd1cfe --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/plus.svg @@ -0,0 +1,8 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_6285" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20"> +<path d="M16.25 9.25H10.75V3.75C10.75 3.33594 10.4141 3 10 3C9.58594 3 9.25 3.33594 9.25 3.75V9.25H3.75C3.33594 9.25 3 9.58594 3 10C3 10.4141 3.33594 10.75 3.75 10.75H9.25V16.25C9.25 16.6641 9.58594 17 10 17C10.4141 17 10.75 16.6641 10.75 16.25V10.75H16.25C16.6641 10.75 17 10.4141 17 10C17 9.58594 16.6641 9.25 16.25 9.25Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_6285)"> +<rect width="20" height="20" fill="#292929"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/stop.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/stop.svg new file mode 100644 index 00000000000..8ecf925fa96 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/stop.svg @@ -0,0 +1,8 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_392" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20"> +<path d="M13.75 4H6.25C5.00736 4 4 5.00736 4 6.25V13.75C4 14.9926 5.00736 16 6.25 16H13.75C14.9926 16 16 14.9926 16 13.75V6.25C16 5.00736 14.9926 4 13.75 4Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_392)"> +<rect width="20" height="20" fill="white"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/three-dots.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/three-dots.svg new file mode 100644 index 00000000000..2b056214164 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/three-dots.svg @@ -0,0 +1,13 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_6651" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="4" y="4" width="16" height="16"> +<path d="M12 13.2174C12.6628 13.2174 13.2 12.6801 13.2 12.0174C13.2 11.3546 12.6628 10.8174 12 10.8174C11.3373 10.8174 10.8 11.3546 10.8 12.0174C10.8 12.6801 11.3373 13.2174 12 13.2174Z" fill="#292929"/> +<path d="M12 10.7998C11.3373 10.7998 10.8 11.3371 10.8 11.9998C10.8 12.6625 11.3373 13.1998 12 13.1998C12.6628 13.1998 13.2 12.6625 13.2 11.9998C13.2 11.3371 12.6628 10.7998 12 10.7998Z" fill="#292929"/> +<path d="M7.2 13.2174C7.86274 13.2174 8.4 12.6801 8.4 12.0174C8.4 11.3546 7.86274 10.8174 7.2 10.8174C6.53726 10.8174 6 11.3546 6 12.0174C6 12.6801 6.53726 13.2174 7.2 13.2174Z" fill="#292929"/> +<path d="M7.2 13.1998C7.86274 13.1998 8.4 12.6625 8.4 11.9998C8.4 11.3371 7.86274 10.7998 7.2 10.7998C6.53726 10.7998 6 11.3371 6 11.9998C6 12.6625 6.53726 13.1998 7.2 13.1998Z" fill="#292929"/> +<path d="M16.8 13.2174C17.4627 13.2174 18 12.6801 18 12.0174C18 11.3546 17.4627 10.8174 16.8 10.8174C16.1372 10.8174 15.6 11.3546 15.6 12.0174C15.6 12.6801 16.1372 13.2174 16.8 13.2174Z" fill="#292929"/> +<path d="M16.8 13.1998C17.4627 13.1998 18 12.6625 18 11.9998C18 11.3371 17.4627 10.7998 16.8 10.7998C16.1372 10.7998 15.6 11.3371 15.6 11.9998C15.6 12.6625 16.1372 13.1998 16.8 13.1998Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_6651)"> +<rect x="4" y="4" width="16" height="16" fill="#292929"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-down.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-down.svg new file mode 100644 index 00000000000..c9933ce31c7 --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-down.svg @@ -0,0 +1,8 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_1092" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20"> +<path d="M18.7808 9.19434L16.7505 4.31739C16.165 2.91114 14.8071 2.00098 13.29 2.00001H4.25C3.00928 2.00001 2 3.00978 2 4.25099V9.75099C2 10.9912 3.00928 12.001 4.25 12.001H6.31592C7.30567 12.0039 7.60205 13.2471 7.94043 15.1445C8.22119 16.7178 8.53906 18.5 10.0649 18.5C11.9155 18.5 12.1279 17.0293 12.2441 16.2246C12.2456 16.2129 12.4502 13.6895 12.4502 13.6895C12.4819 13.3037 12.8101 13.001 13.1973 13.001H16.2422C17.1636 13.001 18.019 12.543 18.5303 11.7764C19.0415 11.0098 19.1353 10.0449 18.7808 9.19434ZM3.5 9.75098V4.25098C3.5 3.83692 3.83643 3.5 4.25 3.5H5.25V10.501H4.25C3.83643 10.501 3.5 10.1641 3.5 9.75098ZM17.2822 10.9443C17.0464 11.2979 16.6675 11.501 16.2422 11.501H13.1973C12.0352 11.501 11.0503 12.4082 10.9551 13.5674C10.9551 13.5674 10.7603 15.9814 10.7578 16.0244C10.6167 17 10.4985 16.9863 10.0444 16.998C9.77588 16.8916 9.53369 15.5342 9.41699 14.8809C9.10949 13.1562 8.69446 10.8372 6.75 10.5352V3.5H13.2895C14.1987 3.50098 15.0137 4.04785 15.3657 4.89355L17.396 9.7705C17.5596 10.1631 17.5181 10.5908 17.2822 10.9443Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_1092)"> +<rect width="20" height="20" fill="#292929"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-up.svg b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-up.svg new file mode 100644 index 00000000000..930596091bd --- /dev/null +++ b/2nd-gen/packages/swc/patterns/conversational-ai/utils/icons/thumbs-up.svg @@ -0,0 +1,8 @@ +<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="mask0_6481_1073" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="20"> +<path d="M18.5303 8.22461C18.019 7.45801 17.1636 7 16.2422 7H13.1973C12.8101 7 12.4819 6.69727 12.4502 6.31152L12.25 3.93164C12.2519 3.87988 12.248 3.79394 12.2393 3.74316C12.1279 3.08984 11.8667 1.55957 10.0649 1.55957C8.583 1.55957 8.27538 3.22852 7.97802 4.84375C7.63818 6.69043 7.31982 7.99707 6.31786 8H4.24999C3.00927 8 1.99999 9.00977 1.99999 10.25V15.75C1.99999 16.9902 3.00927 18 4.24999 18H11.75C11.7842 18 11.8179 17.9981 11.8506 17.9932H13.2905C14.8091 17.9922 16.167 17.085 16.7505 15.6836L18.7808 10.8066C19.1352 9.95605 19.0415 8.99121 18.5303 8.22461ZM3.5 15.75V10.25C3.5 9.83691 3.83643 9.5 4.25 9.5H5.25V16.5H4.25C3.83643 16.5 3.5 16.1631 3.5 15.75ZM17.396 10.2305L15.3657 15.1074C15.0156 15.9482 14.2007 16.4922 13.2901 16.4932H11.75C11.7158 16.4932 11.6821 16.4951 11.6494 16.5H6.75001V9.46655C8.70582 9.1665 9.13496 6.84277 9.45362 5.11523C9.57618 4.44824 9.80518 3.20605 10.065 3.05957C10.4258 3.05957 10.5942 3.05957 10.7505 3.9375C10.751 3.95215 10.7515 3.9668 10.7525 3.97852L10.9551 6.43457C11.0503 7.59277 12.0352 8.5 13.1973 8.5H16.2422C16.6675 8.5 17.0464 8.70312 17.2822 9.05664C17.5181 9.41016 17.5596 9.83789 17.396 10.2305Z" fill="#292929"/> +</mask> +<g mask="url(#mask0_6481_1073)"> +<rect width="20" height="20" fill="#292929"/> +</g> +</svg> diff --git a/2nd-gen/packages/swc/public/robots.txt b/2nd-gen/packages/swc/public/robots.txt new file mode 100644 index 00000000000..0d87ebe723b --- /dev/null +++ b/2nd-gen/packages/swc/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://opensource.adobe.com/spectrum-web-components/second-gen/sitemap.xml diff --git a/2nd-gen/packages/swc/stylesheets/global/global-elements.css b/2nd-gen/packages/swc/stylesheets/global/global-elements.css index 14a7739f5f4..92d62e59730 100644 --- a/2nd-gen/packages/swc/stylesheets/global/global-elements.css +++ b/2nd-gen/packages/swc/stylesheets/global/global-elements.css @@ -13,3 +13,4 @@ @layer swc-global-elements, swc-global-element-overrides; @import url("./global-button.css"); +@import url("./global-message-sources.css"); diff --git a/2nd-gen/packages/swc/stylesheets/global/global-message-sources.css b/2nd-gen/packages/swc/stylesheets/global/global-message-sources.css new file mode 100644 index 00000000000..d81655f7569 --- /dev/null +++ b/2nd-gen/packages/swc/stylesheets/global/global-message-sources.css @@ -0,0 +1,20 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +@layer swc-global-elements { + swc-message-sources li a { + font-size: token("font-size-100"); + color: token("gray-800"); + text-decoration: underline; + text-underline-offset: 2px; + } +} diff --git a/2nd-gen/packages/swc/vite.config.ts b/2nd-gen/packages/swc/vite.config.ts index 48b492ba9db..969edba54d4 100644 --- a/2nd-gen/packages/swc/vite.config.ts +++ b/2nd-gen/packages/swc/vite.config.ts @@ -87,7 +87,10 @@ export default defineConfig({ }, build: { lib: { - entry: glob.sync(resolve(__dirname, 'components/*/index.ts')).reduce( + entry: [ + ...glob.sync(resolve(__dirname, 'components/*/index.ts')), + ...glob.sync(resolve(__dirname, 'patterns/*/*/index.ts')), + ].reduce( (entries, file) => { const name = file .replace(resolve(__dirname) + '/', '') diff --git a/2nd-gen/packages/tools/postcss-token/index.d.ts b/2nd-gen/packages/tools/postcss-token/index.d.ts index 2129ab0bd0c..74b6cfc0789 100644 --- a/2nd-gen/packages/tools/postcss-token/index.d.ts +++ b/2nd-gen/packages/tools/postcss-token/index.d.ts @@ -1,5 +1,5 @@ /** - * Copyright 2025 Adobe. All rights reserved. + * Copyright 2026 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 diff --git a/CONTRIBUTOR-DOCS/01_contributor-guides/03_working-in-the-swc-repo.md b/CONTRIBUTOR-DOCS/01_contributor-guides/03_working-in-the-swc-repo.md index 4c1ecd54897..80f73433a43 100644 --- a/CONTRIBUTOR-DOCS/01_contributor-guides/03_working-in-the-swc-repo.md +++ b/CONTRIBUTOR-DOCS/01_contributor-guides/03_working-in-the-swc-repo.md @@ -73,18 +73,16 @@ SWC is currently in transition from its first generation (**1st-gen**) to its se > This transition is motivated by some important strategic goals. For more information, see [Objectives and Strategy](../03_project-planning/01_objectives-and-strategy.md). -Instead of creating a separate branch or repo for 2nd-gen, we are working on the 1st-gen and 2nd-gen projects side-by-side in this repository, with some core functionality being shared between 1st- and 2nd-gen components. This strategy makes it easier for us to continue actively improving and supporting 1st-gen even as we devote much of our attention to defining and building 2nd-gen. +Instead of creating a separate branch or repo for 2nd-gen, we are working on both projects side-by-side in this repository. The two generations are **independent** — there is no runtime dependency between them. Code in 2nd-gen does not affect 1st-gen, and vice versa. -Reflecting the side-by-side strategy, the repository is organized into two top-level workspaces: +Reflecting this structure, the repository is organized into two top-level workspaces: -- **`1st-gen/`** contains all of the 1st-gen packages, tooling, and supporting materials. - - Most of what lives here will be left behind in the transition to 2nd-gen; the core component functionality we'll carry forward is gradually being moved into the `2nd-gen` workspace. +- **`1st-gen/`** contains all of the 1st-gen packages, tooling, and supporting materials. It is self-contained. While we'll continue doing work in `1st-gen` as needed to accomplish our goals, we expect this work to decrease steadily toward none. - **`2nd-gen/`** is a new workspace that we're building from the ground up to serve as a clean foundation for our future work. It includes: - - A Core library (`packages/core/`), which contains the functionality shared between 1st- and 2nd-gen + - A Core library (`packages/core/`), which contains behavior, API, and shared logic for 2nd-gen components - The 2nd-gen SWC library (`packages/swc/`). diff --git a/CONTRIBUTOR-DOCS/01_contributor-guides/06_releasing-swc.md b/CONTRIBUTOR-DOCS/01_contributor-guides/06_releasing-swc.md index d43d858af86..39de12376bc 100644 --- a/CONTRIBUTOR-DOCS/01_contributor-guides/06_releasing-swc.md +++ b/CONTRIBUTOR-DOCS/01_contributor-guides/06_releasing-swc.md @@ -61,7 +61,7 @@ yarn changeset Follow the prompts to select packages and bump type. -> **Important:** When you modify `@spectrum-web-components/core`, you must **manually add changesets** for any affected 1st-gen components. The `linked` versioning between Core and 2nd-gen handles 2nd-gen automatically, but 1st-gen packages are in a `fixed` group and are not linked to Core. +> **Note:** 1st-gen and 2nd-gen are independent. Changes to `@spectrum-web-components/core` only affect 2nd-gen. The `linked` versioning between Core and 2nd-gen handles this automatically. 1st-gen packages are in a separate `fixed` group. ### Understand the versioning strategy diff --git a/.cursor/skills/contributor-docs-nav/scripts/update-nav.js b/CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/update-nav.js similarity index 99% rename from .cursor/skills/contributor-docs-nav/scripts/update-nav.js rename to CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/update-nav.js index 7ca3b9c99b1..4c0871f0c09 100644 --- a/.cursor/skills/contributor-docs-nav/scripts/update-nav.js +++ b/CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/update-nav.js @@ -1,4 +1,5 @@ #!/usr/bin/env node +/* eslint-disable no-console */ /** * Copyright 2026 Adobe. All rights reserved. diff --git a/.cursor/skills/contributor-docs-nav/scripts/verify-links.js b/CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/verify-links.js similarity index 100% rename from .cursor/skills/contributor-docs-nav/scripts/verify-links.js rename to CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs/verify-links.js diff --git a/CONTRIBUTOR-DOCS/01_contributor-guides/11_2ndgen_testing.md b/CONTRIBUTOR-DOCS/01_contributor-guides/11_2ndgen_testing.md index 2e40ab9d749..258ec1748dc 100644 --- a/CONTRIBUTOR-DOCS/01_contributor-guides/11_2ndgen_testing.md +++ b/CONTRIBUTOR-DOCS/01_contributor-guides/11_2ndgen_testing.md @@ -13,7 +13,6 @@ - [Overview](#overview) - [Where to put tests](#where-to-put-tests) -- [Quick reference](#quick-reference) </details> @@ -29,4 +28,4 @@ - Add test stories in `2nd-gen/packages/swc/components/<component>/test/<component>.test.ts`. - Add accessibility tests in `2nd-gen/packages/swc/components/<component>/test/<component>.a11y.spec.ts`. - Reuse the base stories and metadata from the main doc stories file. -- Test stories run in development Storybook only and are excluded from `storybook:build`. \ No newline at end of file +- Test stories run in development Storybook only and are excluded from `storybook:build`. diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/01_file-organization.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/01_file-organization.md new file mode 100644 index 00000000000..3e002c271ae --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/01_file-organization.md @@ -0,0 +1,251 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / File organization + +<!-- Document title (editable) --> + +# File organization + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Copyright header](#copyright-header) +- [Import grouping and order](#import-grouping-and-order) + - [Group 1: Lit and external packages](#group-1-lit-and-external-packages) + - [Group 2: Internal packages](#group-2-internal-packages) + - [Group 3: Side-effect imports](#group-3-side-effect-imports) + - [Group 4: Relative imports](#group-4-relative-imports) + - [Group 5: Style imports](#group-5-style-imports) + - [Import extensions](#import-extensions) +- [Core utilities](#core-utilities) +- [File set per component](#file-set-per-component) +- [Where types files live](#where-types-files-live) +- [Export patterns](#export-patterns) + - [Core index.ts](#core-indexts) + - [SWC index.ts](#swc-indexts) + +</details> + +<!-- Document content (editable) --> + +This guide explains how to organize files in 2nd-gen components. It covers the copyright header, how to order imports, what files each component needs, and how to set up exports. + +## Copyright header + +Every TypeScript file starts with the Apache 2.0 copyright header. The template lives at [`linters/HEADER.js`](../../../linters/HEADER.js) and the `<%= YEAR %>` placeholder is replaced with the current year. The linter automatically adds this header to new files, so you do not need to copy it manually. Do not change the wording. + +## Import grouping and order + +Imports are sorted into five groups, separated by blank lines. This order is enforced by ESLint (`simple-import-sort/imports`), so the linter will fix the order for you. But it helps to know the groups so you can write them correctly the first time. + +### Group 1: Lit and external packages + +Imports from `lit`, `@lit`, and any external package that is **not** `@adobe/spectrum-wc` or `@spectrum-web-components`. + +```ts +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; +import { classMap } from 'lit/directives/class-map.js'; +import { when } from 'lit/directives/when.js'; +``` + +### Group 2: Internal packages + +Imports from `@adobe/spectrum-wc` or `@spectrum-web-components`. + +```ts +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; +import { SizedMixin } from '@spectrum-web-components/core/mixins/index.js'; +import { ObserveSlotPresence } from '@spectrum-web-components/core/mixins/observe-slot-presence.js'; +import { ObserveSlotText } from '@spectrum-web-components/core/mixins/observe-slot-text.js'; +``` + +### Group 3: Side-effect imports + +Imports that run code but don't export a binding (e.g. polyfills or registration). These are less common in component files. + +```ts +import './some-polyfill.js'; +``` + +### Group 4: Relative imports + +Imports from the same package using relative paths (starting with `./` or `../`). + +```ts +import { + BADGE_VARIANTS_SEMANTIC, + type BadgeVariant, + FIXED_VALUES, + type FixedValues, +} from './Badge.types.js'; +``` + +### Group 5: Style imports + +CSS imports. These always come last. Always use `styles` as the import name for consistency: + +```ts +// ✅ Good +import styles from './badge.css'; + +// ❌ Bad — component-specific name +import progressCircleStyles from './progress-circle.css'; +import badgeStyles from './badge.css'; +``` + +### Import extensions + +Use `.js` extensions for all imports. Never use `.ts` in import paths. This is enforced by the linter (`import/extensions`). + +```ts +// ✅ Good +import { BadgeBase } from './Badge.base.js'; + +// ❌ Bad +import { BadgeBase } from './Badge.base.ts'; +import { BadgeBase } from './Badge.base'; +``` + +**Complete example from Badge.base.ts:** + +```ts +// Group 1: Lit and external +import { PropertyValues } from 'lit'; +import { property } from 'lit/decorators.js'; + +// Group 2: Internal packages +import { SpectrumElement } from '@spectrum-web-components/core/element/index.js'; +import { SizedMixin } from '@spectrum-web-components/core/mixins/index.js'; +import { ObserveSlotPresence } from '@spectrum-web-components/core/mixins/observe-slot-presence.js'; +import { ObserveSlotText } from '@spectrum-web-components/core/mixins/observe-slot-text.js'; + +// Group 4: Relative imports +import { + BADGE_VARIANTS_SEMANTIC, + type BadgeVariant, + FIXED_VALUES, + type FixedValues, +} from './Badge.types.js'; +``` + +**Complete example from Badge.ts (concrete class):** + +```ts +// Group 1: Lit and external +import { CSSResultArray, html, TemplateResult } from 'lit'; +import { property } from 'lit/decorators.js'; +import { classMap } from 'lit/directives/class-map.js'; +import { when } from 'lit/directives/when.js'; + +// Group 2: Internal packages +import { + BADGE_VALID_SIZES, + BADGE_VARIANTS, + BADGE_VARIANTS_COLOR, + BadgeBase, + type BadgeVariant, +} from '@spectrum-web-components/core/components/badge'; + +// Group 5: Style imports +import styles from './badge.css'; +``` + +## Core utilities + +The core package provides utility functions that concrete classes may import for rendering: + +| Utility | Import path | Purpose | +|---------|------------|---------| +| `capitalize` | `@spectrum-web-components/core/utils/index.js` | Capitalize a string for CSS class generation | + +**Example from Divider.ts:** + +```ts +import { capitalize } from '@spectrum-web-components/core/utils/index.js'; + +// Used in render +[`swc-Divider--static${capitalize(this.staticColor)}`]: this.staticColor != null, +``` + +When you need additional utilities (e.g., string formatting, value clamping), check if one already exists in `core/utils/` before creating your own. + +## File set per component + +Each component has files in two packages: **core** and **swc**. + +| Package | File | Purpose | +|---------|------|---------| +| core | `Component.base.ts` | Abstract base class with behavior and API | +| core | `Component.types.ts` | Constant arrays and TypeScript types | +| core | `index.ts` | Re-exports base class and types | +| swc | `Component.ts` | Concrete class with styles and rendering | +| swc | `component.css` | Component stylesheet | +| swc | `index.ts` | Registers the custom element and re-exports | + +The core package also lives at `2nd-gen/packages/core/components/<name>/` and the swc package at `2nd-gen/packages/swc/components/<name>/`. + +**Example for Badge:** + +| File | Location | +|------|----------| +| `Badge.base.ts` | `core/components/badge/Badge.base.ts` | +| `Badge.types.ts` | `core/components/badge/Badge.types.ts` | +| `index.ts` | `core/components/badge/index.ts` | +| `Badge.ts` | `swc/components/badge/Badge.ts` | +| `badge.css` | `swc/components/badge/badge.css` | +| `index.ts` | `swc/components/badge/index.ts` | + +## Where types files live + +Types files always live in the **core** package, not in swc. This keeps the behavior layer (core) and the rendering layer (swc) cleanly separated. + +```text +2nd-gen/packages/core/components/badge/Badge.types.ts ✅ Correct +2nd-gen/packages/swc/components/badge/Badge.types.ts ❌ Wrong location +``` + +The concrete class in swc imports types from core through the package path: + +```ts +import { + type BadgeVariant, +} from '@spectrum-web-components/core/components/badge'; +``` + +## Export patterns + +### Core index.ts + +The core `index.ts` re-exports everything from the base class and the types file. It uses wildcard exports. + +```ts +export * from './Badge.base.js'; +export * from './Badge.types.js'; +``` + +### SWC index.ts + +The SWC `index.ts` does three things: + +1. Registers the custom element using `defineElement`. +2. Re-exports the concrete class. +3. Declares the element in the global `HTMLElementTagNameMap`. + +```ts +import { defineElement } from '@spectrum-web-components/core/element/index.js'; + +import { Badge } from './Badge.js'; + +export * from './Badge.js'; +declare global { + interface HTMLElementTagNameMap { + 'swc-badge': Badge; + } +} +defineElement('swc-badge', Badge); +``` + +For more on type file patterns (naming, structure, S1/S2 split), see [Component types](08_component-types.md). diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/02_class-structure.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/02_class-structure.md new file mode 100644 index 00000000000..ba6e0b8a816 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/02_class-structure.md @@ -0,0 +1,421 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Class structure + +<!-- Document title (editable) --> + +# Class structure + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) +- [Two classes per component](#two-classes-per-component) +- [Base class (core)](#base-class-core) + - [Section: API TO OVERRIDE](#section-api-to-override) + - [Section: SHARED API](#section-shared-api) + - [Section: IMPLEMENTATION](#section-implementation) +- [Concrete class (SWC)](#concrete-class-swc) + - [Section: API OVERRIDES](#section-api-overrides) + - [Section: API ADDITIONS](#section-api-additions) + - [Section: RENDERING and STYLING](#section-rendering-and-styling) +- [Section comment format](#section-comment-format) +- [When to omit sections](#when-to-omit-sections) + +</details> + +<!-- Document content (editable) --> + +This guide explains how to organize a component class in 2nd-gen. Every component has two classes: a **base class** in core and a **concrete class** in SWC. Each class uses section comments to group related code. + +## Overview + +The base class holds behavior and API. The concrete class holds styles, rendering, and anything specific to the visual layer. This separation keeps logic testable and reusable independently of rendering. + +> **Reference implementation:** [Badge.base.ts](../../../2nd-gen/packages/core/components/badge/Badge.base.ts) (base) and [Badge.ts](../../../2nd-gen/packages/swc/components/badge/Badge.ts) (concrete). + +## Two classes per component + +| Class | Package | Location | Purpose | +|-------|---------|----------|---------| +| Base (abstract) | core | `core/components/<name>/Component.base.ts` | Behavior, validation, and API | +| Concrete | swc | `swc/components/<name>/Component.ts` | Styles, rendering, and 2nd-gen API | + +The base class is `abstract`. You cannot create an instance of it directly. The concrete class extends the base and provides everything needed to render the component. + +## Base class (core) + +The base class is organized into up to three sections: + +```text +API TO OVERRIDE → Properties and statics that subclasses must set +SHARED API → Properties and constants used by all concrete classes +IMPLEMENTATION → Lifecycle methods, validation, and internal logic +``` + +### Section: API TO OVERRIDE + +This section holds properties and static members that each concrete class **must** override. The base class declares them but does not set their final values — concrete classes provide the actual values. + +**What goes here:** + +- Static readonly arrays that vary by generation (e.g. `VARIANTS`, `VARIANTS_COLOR`, `STATIC_COLORS`) +- Properties whose valid values differ between S1 and S2 (e.g. `variant`) + +**Example from Badge.base.ts:** + +```ts +// ───────────────────────── +// API TO OVERRIDE +// ───────────────────────── + +/** + * @internal + */ +static readonly VARIANTS_COLOR: readonly string[]; + +/** + * @internal + */ +static readonly VARIANTS: readonly string[]; + +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +**Example from Asset.base.ts:** + +```ts +// ───────────────────────── +// API TO OVERRIDE +// ───────────────────────── + +/** + * @internal + */ +static readonly VARIANTS: readonly AssetVariant[] = ASSET_VARIANTS; +``` + +### Section: SHARED API + +This section holds properties, constants, and getters that are the **same** across all generations. They do not need to be overridden. + +**What goes here:** + +- Static constants that are the same in S1 and S2 (e.g. `FIXED_VALUES`, `VARIANTS_SEMANTIC`) +- Properties that are shared and not generation-specific (e.g. `fixed`, `indeterminate`, `label`, `progress`) +- Getters with backing fields (e.g. the `fixed` getter/setter with `_fixed`) + +**Example from Badge.base.ts:** + +```ts +// ────────────────── +// SHARED API +// ────────────────── + +/** + * @internal + */ +static readonly FIXED_VALUES: readonly string[] = FIXED_VALUES; + +/** + * @internal + */ +static readonly VARIANTS_SEMANTIC: readonly string[] = BADGE_VARIANTS_SEMANTIC; + +@property({ reflect: true }) +public get fixed(): FixedValues | undefined { + return this._fixed; +} + +public set fixed(fixed: FixedValues | undefined) { + // ...custom setter logic... +} + +private _fixed?: FixedValues; +``` + +**Example from ProgressCircle.base.ts:** + +```ts +// ────────────────── +// SHARED API +// ────────────────── + +@property({ type: Boolean, reflect: true }) +public indeterminate = false; + +@property({ type: String }) +public label = ''; + +@property({ type: Number }) +public progress = 0; +``` + +### Section: IMPLEMENTATION + +This section holds lifecycle methods, validation logic, internal getters, and private helpers. Nothing in this section is part of the public API. + +**What goes here:** + +- Protected getters used by rendering (e.g. `hasIcon`) +- Lifecycle overrides (e.g. `update`, `firstUpdated`, `updated`) +- Validation logic (e.g. checking `variant` against `VARIANTS`) +- Private helper methods +- `@query` decorated properties + +**Example from Badge.base.ts:** + +```ts +// ────────────────────── +// IMPLEMENTATION +// ────────────────────── + +/** + * @internal Used for rendering gap when the badge has an icon. + */ +protected get hasIcon(): boolean { + return this.slotContentIsPresent; +} + +protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + // ...variant validation... + } +} +``` + +## Concrete class (SWC) + +The concrete class is organized into up to three sections: + +```text +API OVERRIDES → Values for properties declared in the base +API ADDITIONS → New properties only in this generation (optional) +RENDERING & STYLING → Styles and the render method +``` + +### Section: API OVERRIDES + +This section sets the values that the base class declared in `API TO OVERRIDE`. It uses the `override` keyword. + +**What goes here:** + +- Static overrides for variant arrays and valid sizes +- Property overrides with narrowed types + +**Example from Badge.ts:** + +```ts +// ──────────────────── +// API OVERRIDES +// ──────────────────── + +/** + * @internal + */ +static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; + +/** + * @internal + */ +static override readonly VARIANTS = BADGE_VARIANTS; + +/** + * @internal + */ +static override readonly VALID_SIZES = BADGE_VALID_SIZES; + +@property({ type: String, reflect: true }) +public override variant: BadgeVariant = 'informative'; +``` + +### Section: API ADDITIONS + +This section holds properties that exist **only** in this generation. They are not declared in the base class. Use this section when 2nd-gen introduces new features that 1st-gen does not have. + +**What goes here:** + +- New properties specific to S2 (e.g. `subtle`, `outline`) + +**Example from Badge.ts:** + +```ts +// ─────────────────── +// API ADDITIONS +// ─────────────────── + +/** + * Whether the badge is subtle. + * + * @todo This can be moved to the base class once we are no longer maintaining 1st-gen. + */ +@property({ type: Boolean, reflect: true }) +public subtle: boolean = false; + +/** + * Whether the badge is outlined. + * + * Can only be used with semantic variants. + * + * @todo This can be moved to the base class once we are no longer maintaining 1st-gen. + */ +@property({ type: Boolean, reflect: true }) +public outline: boolean = false; +``` + +Not every component has this section. If there are no generation-specific additions, omit it. For example, Status Light and Progress Circle do not have an `API ADDITIONS` section. + +### Section: RENDERING and STYLING + +This section holds the component's styles and `render()` method. Every concrete class has this section. + +**What goes here:** + +- The static `styles` getter +- The `render()` method + +**Styles declaration:** + +Always use the getter pattern for styles. This provides consistency with Lit conventions and allows for easier extension: + +```ts +// ✅ Good — getter pattern +public static override get styles(): CSSResultArray { + return [styles]; +} + +// ❌ Bad — property pattern (inconsistent) +public static override styles: CSSResultArray = [styles]; +``` + +**Example from Badge.ts:** + +```ts +// ────────────────────────────── +// RENDERING & STYLING +// ────────────────────────────── + +public static override get styles(): CSSResultArray { + return [styles]; +} + +protected override render(): TemplateResult { + return html` + <div class=${classMap({ ['swc-Badge']: true })}> + <!-- ...template content... --> + </div> + `; +} +``` + +## Section comment format + +Section comments use ASCII box-drawing characters. The format has three lines: + +```ts +// ───────────────────────── +// SECTION NAME +// ───────────────────────── +``` + +Rules: + +- The top and bottom lines use the `─` character (U+2500, "box drawings light horizontal"). +- The section name is indented with 5 spaces after `//`. +- The line width should match the section name length consistently. +- There is a blank line before each section separator. + +**Standard section separator widths:** + +| Section | Line width (chars) | +|---------|-------------------| +| `API TO OVERRIDE` | 25 | +| `SHARED API` | 18 | +| `IMPLEMENTATION` | 22 | +| `API OVERRIDES` | 20 | +| `API ADDITIONS` | 19 | +| `RENDERING & STYLING` | 30 | + +**Standard formats:** + +```ts +// ───────────────────────── +// API TO OVERRIDE +// ───────────────────────── + +// ────────────────── +// SHARED API +// ────────────────── + +// ────────────────────── +// IMPLEMENTATION +// ────────────────────── + +// ──────────────────── +// API OVERRIDES +// ──────────────────── + +// ─────────────────── +// API ADDITIONS +// ─────────────────── + +// ────────────────────────────── +// RENDERING & STYLING +// ────────────────────────────── +``` + +```ts +// ✅ Good +// ───────────────────────── +// API TO OVERRIDE +// ───────────────────────── + +// ❌ Bad — uses dashes instead of box-drawing characters +// ------------------------- +// API TO OVERRIDE +// ------------------------- + +// ❌ Bad — uses a different comment style +/* ======================== */ +/* API TO OVERRIDE */ +/* ======================== */ +``` + +## When to omit sections + +Not every component needs all sections. Omit a section if it would be empty. + +| Section | When to include | +|---------|----------------| +| `API TO OVERRIDE` | The base has properties that differ between S1 and S2 | +| `SHARED API` | The base has shared properties beyond what mixins provide | +| `IMPLEMENTATION` | The base has lifecycle methods, validation, or helpers | +| `API OVERRIDES` | The concrete class overrides anything from the base | +| `API ADDITIONS` | The concrete class adds generation-specific properties | +| `RENDERING & STYLING` | Always (every concrete class renders) | + +For example, the Divider base class is simple enough that it does not use section separators. The Asset concrete class only has `RENDERING & STYLING` because it has no API overrides or additions. + +When a component is simple, section comments are still recommended for consistency, but they are not strictly required if the class has only a few members and no logical grouping. + +**Guidance for simple concrete classes:** + +For concrete classes with only a `render()` method and styles (no overrides or additions), section separators are optional but recommended for consistency. If omitted, the class should still follow the property/method ordering rules. + +**Example — simple component without separators (acceptable):** + +```ts +export class Divider extends DividerBase { + public static override get styles(): CSSResultArray { + return [styles]; + } + + protected override render(): TemplateResult { + return html`...`; + } +} +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/03_typescript-modifiers.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/03_typescript-modifiers.md new file mode 100644 index 00000000000..02f8a3616e0 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/03_typescript-modifiers.md @@ -0,0 +1,273 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / TypeScript modifier keywords + +<!-- Document title (editable) --> + +# TypeScript modifier keywords + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [static](#static) +- [readonly](#readonly) +- [abstract](#abstract) +- [override](#override) +- [public](#public) +- [protected](#protected) +- [private](#private) +- [Combining modifiers](#combining-modifiers) + +</details> + +<!-- Document content (editable) --> + +This guide explains the TypeScript modifier keywords used in 2nd-gen components. Each keyword controls who can access a class member and how it behaves. Using them correctly keeps the API clear and prevents bugs. + +## static + +`static` means the member belongs to the **class itself**, not to any instance. Use it for values that are the same across all instances of a component, like valid variant arrays or size lists. + +**When to use:** + +- Readonly arrays of valid values (e.g. `VARIANTS`, `VALID_SIZES`, `STATIC_COLORS`) +- The `styles` getter in concrete classes + +**Example from Badge.base.ts:** + +```ts +// ✅ Good — VARIANTS is the same for all Badge instances +static readonly VARIANTS_COLOR: readonly string[]; +``` + +**Example from Badge.ts:** + +```ts +// ✅ Good — styles apply to all Badge instances +public static override get styles(): CSSResultArray { + return [styles]; +} +``` + +```ts +// ❌ Bad — variant values do not belong on each instance +readonly VARIANTS_COLOR: readonly string[]; +``` + +## readonly + +`readonly` means the member cannot be reassigned after it is set. Use it with `static` for constant arrays that should never change. + +**When to use:** + +- Static arrays of valid values + +**Example from Badge.base.ts:** + +```ts +// ✅ Good — this array should never be reassigned +static readonly VARIANTS: readonly string[]; +``` + +```ts +// ❌ Bad — missing readonly allows accidental reassignment +static VARIANTS: readonly string[]; +``` + +Note that `readonly` on the property prevents reassignment of the reference, while `readonly string[]` in the type prevents mutation of the array contents. Use both for constant arrays. + +## abstract + +`abstract` means the member has no implementation in this class. Subclasses must provide the implementation. Use it on the base class itself and on methods that each concrete class needs to implement differently. + +**When to use:** + +- Base classes that should never be instantiated directly +- Methods that each generation implements differently (rare — most overrides use the `override` pattern instead) + +**Example — abstract class (every base class):** + +```ts +// ✅ Good — BadgeBase cannot be instantiated directly +export abstract class BadgeBase extends SizedMixin(...) { + // ... +} +``` + +**Example — abstract method (AlertBanner.base.ts):** + +```ts +// ✅ Good — each generation provides its own icon rendering +protected abstract renderIcon(variant: string): TemplateResult; +``` + +Abstract methods are rare in 2nd-gen. Most base classes use the `API TO OVERRIDE` pattern with concrete default values instead. + +## override + +`override` tells TypeScript that this member replaces one from the parent class. TypeScript will error if the parent does not have a matching member. This catches typos and API drift. + +**When it is required:** + +- When a concrete class sets static overrides declared in the base +- When a concrete class narrows the type of a property from the base +- When overriding Lit lifecycle methods (`update`, `firstUpdated`, `updated`, `render`, `connectedCallback`) +- When overriding the `styles` getter + +**Example from Badge.ts:** + +```ts +// ✅ Good — override tells TypeScript this must match the base class +static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; + +@property({ type: String, reflect: true }) +public override variant: BadgeVariant = 'informative'; + +protected override render(): TemplateResult { + return html`...`; +} +``` + +```ts +// ❌ Bad — forgetting override hides the parent member silently +static readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; + +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +If you forget `override`, TypeScript may not catch the problem, and the base class member could be shadowed instead of properly overridden. + +## public + +`public` means anyone can access the member — consumers, subclasses, and internal code. In TypeScript, class members are `public` by default, but we write it explicitly for clarity. + +**When to use:** + +- Properties that are part of the component's public API (e.g. `variant`, `size`, `label`, `subtle`) +- Methods that consumers call (e.g. `close()`) +- Static members (e.g. `static override get styles()`) + +**Example from Badge.ts:** + +```ts +// ✅ Good — explicit public makes the API clear +@property({ type: Boolean, reflect: true }) +public subtle: boolean = false; +``` + +```ts +// ❌ Bad — implicit public is harder to scan +@property({ type: Boolean, reflect: true }) +subtle: boolean = false; +``` + +Always write `public` explicitly. It makes it easy to scan a class and see what is part of the API vs what is internal. + +## protected + +`protected` means only the class itself and its subclasses can access the member. Use it for lifecycle methods and helpers that subclasses may need. + +**When to use:** + +- Lit lifecycle overrides (`update`, `firstUpdated`, `updated`, `render`) +- Internal getters used by subclass rendering (e.g. `hasIcon`) +- Helper methods that subclasses call but consumers should not + +**Example from Badge.base.ts:** + +```ts +// ✅ Good — hasIcon is used by the concrete class render(), not by consumers +protected get hasIcon(): boolean { + return this.slotContentIsPresent; +} + +// ✅ Good — update is a lifecycle method, not a public API +protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + // ... +} +``` + +```ts +// ❌ Bad — using public for a lifecycle method suggests consumers should call it +public override update(changedProperties: PropertyValues): void { + // ... +} + +// ❌ Bad — using private prevents subclasses from accessing it +private get hasIcon(): boolean { + return this.slotContentIsPresent; +} +``` + +## private + +`private` means only the class itself can access the member. Not subclasses, not consumers. Use it for internal state and helpers that no one else should touch. + +**When to use:** + +- Backing fields for custom getters/setters (e.g. `_fixed`, `_variant`) +- Controllers attached to the host (e.g. `languageResolver`) +- Internal `@query` elements (e.g. `slotEl`) +- Helper methods that are only used within the class + +**Example from Badge.base.ts:** + +```ts +// ✅ Good — _fixed is the backing field for the public fixed getter +private _fixed?: FixedValues; +``` + +**Example from ProgressCircle.base.ts:** + +```ts +// ✅ Good — slotEl is only used internally +@query('slot') +private slotEl!: HTMLSlotElement; + +// ✅ Good — formatProgress is only used within this class +private formatProgress(): string { + // ... +} +``` + +```ts +// ❌ Bad — using protected for a backing field exposes it to subclasses +protected _fixed?: FixedValues; +``` + +## Combining modifiers + +Modifiers can be combined. The order is: + +```ts +[public | protected | private] [static] [abstract | override] [readonly] name +``` + +Common combinations in 2nd-gen: + +| Combination | Usage | +|-------------|-------| +| `public static override get styles()` | Concrete class styles | +| `static override readonly VARIANTS` | Concrete class static overrides | +| `public override variant` | Concrete class property override | +| `protected override render()` | Concrete class render method | +| `protected override update()` | Base or concrete lifecycle override | +| `static readonly VARIANTS` | Base class static declarations | +| `protected abstract renderIcon()` | Abstract method in base class | +| `private _fixed` | Backing field for getter/setter | + +```ts +// ✅ Good — correct modifier order +public static override get styles(): CSSResultArray { + return [styles]; +} + +// ❌ Bad — wrong order (override before static) +public override static get styles(): CSSResultArray { + return [styles]; +} +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/04_lit-decorators.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/04_lit-decorators.md new file mode 100644 index 00000000000..ed7dc82b3b4 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/04_lit-decorators.md @@ -0,0 +1,261 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Lit decorators and modifiers + +<!-- Document title (editable) --> + +# Lit decorators and modifiers + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Usage summary](#usage-summary) +- [@property()](#property) +- [@query()](#query) +- [@queryAssignedNodes()](#queryassignednodes) +- [Decorators not yet used in 2nd-gen](#decorators-not-yet-used-in-2nd-gen) + - [@state()](#state) + - [@queryAll()](#queryall) + - [@queryAsync()](#queryasync) + - [@queryAssignedElements()](#queryassignedelements) + - [@eventOptions()](#eventoptions) +- [CEM and decorators](#cem-and-decorators) + +</details> + +<!-- Document content (editable) --> + +This guide covers the Lit decorators used in 2nd-gen components. Decorators are special annotations that add behavior to class members. They come from the `lit/decorators.js` module. + +For more on Lit decorators, see the [Lit decorators documentation](https://lit.dev/docs/components/decorators/). + +## Usage summary + +| Decorator | Used in 2nd-gen | Files | Purpose | +|-----------|-----------------|-------|---------| +| `@property()` | Yes | 11 | Reactive properties that trigger re-renders | +| `@query()` | Yes | 1 | Query a shadow root element | +| `@queryAssignedNodes()` | Yes | 1 | Query nodes assigned to a slot | +| `@state()` | No | 0 | Internal reactive state | +| `@queryAll()` | No | 0 | Query all matching shadow root elements | +| `@queryAsync()` | No | 0 | Query with updateComplete promise | +| `@queryAssignedElements()` | No | 0 | Query elements assigned to a slot | +| `@eventOptions()` | No | 0 | Event listener options | + +## @property() + +The most common decorator. It marks a class member as a **reactive property**. When the property changes, the component re-renders. It can also reflect the property to an HTML attribute. + +**Import:** + +```ts +import { property } from 'lit/decorators.js'; +``` + +**Options:** + +| Option | Type | Default | Purpose | +|--------|------|---------|---------| +| `type` | `Function` | `String` | How to convert the attribute value | +| `reflect` | `boolean` | `false` | Whether to reflect the property back to the attribute | +| `attribute` | `string \| false` | derived from name | Custom attribute name, or `false` to disable | + +**Example — simple property with reflection (Badge.ts):** + +```ts +@property({ type: Boolean, reflect: true }) +public subtle: boolean = false; +``` + +This creates a `subtle` property. When you set `subtle = true` in JavaScript, the `subtle` attribute appears on the HTML element. When you set `subtle="true"` in HTML, the `subtle` property becomes `true`. + +**Example — property with type and reflection (Badge.base.ts):** + +```ts +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +**Example — property with custom attribute name (ProgressCircle.base.ts):** + +```ts +@property({ type: String, reflect: true, attribute: 'static-color' }) +public staticColor?: ProgressCircleStaticColor; +``` + +The property is called `staticColor` in JavaScript but `static-color` in HTML. Use the `attribute` option when the HTML attribute name differs from the JavaScript property name. + +**Example — property without reflection:** + +```ts +@property({ type: String }) +public label = ''; +``` + +This property does not reflect. Changing `label` in JavaScript does not update the HTML attribute. Use this for properties that are only set via JavaScript. + +```ts +// ✅ Good — reflect: true for attributes consumers set in HTML +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; + +// ✅ Good — no reflection for properties only set in JavaScript +@property({ type: String }) +public label = ''; + +// ❌ Bad — missing type option +@property({ reflect: true }) +public variant = 'informative'; +``` + +**Required options:** + +Always specify the `type` option, even for string properties. This ensures correct attribute conversion and makes the property's type explicit: + +```ts +// ✅ Good — type is explicit +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; + +// ❌ Bad — missing type option +@property({ reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +While Lit defaults to `String`, omitting `type` makes it unclear whether the omission was intentional. + +For more, see [Lit reactive properties documentation](https://lit.dev/docs/components/properties/). + +## @query() + +Queries a single element from the component's shadow root using `querySelector`. The result is cached after the first access. + +**Import:** + +```ts +import { property, query } from 'lit/decorators.js'; +``` + +**Example from ProgressCircle.base.ts:** + +```ts +@query('slot') +private slotEl!: HTMLSlotElement; +``` + +This is equivalent to calling `this.renderRoot.querySelector('slot')` but caches the result. Use it when you need a reference to an element in the shadow root. + +```ts +// ✅ Good — clear selector, typed, private +@query('slot') +private slotEl!: HTMLSlotElement; + +// ❌ Bad — querying in a method every time +private get slotEl(): HTMLSlotElement { + return this.renderRoot.querySelector('slot') as HTMLSlotElement; +} +``` + +## @queryAssignedNodes() + +Queries the nodes assigned to a specific slot. This returns a `NodeList` of all nodes (including text nodes) assigned to the slot. + +**Import:** + +```ts +import { property, queryAssignedNodes } from 'lit/decorators.js'; +``` + +**Options:** + +| Option | Type | Default | Purpose | +|--------|------|---------|---------| +| `slot` | `string` | `''` (default slot) | Which slot to query | +| `flatten` | `boolean` | `false` | Whether to flatten nested slots | + +**Example from ObserveSlotText mixin:** + +```ts +@queryAssignedNodes({ + slot: slotName, + flatten: true, +}) +private [assignedNodesList]!: NodeListOf<HTMLElement>; +``` + +This queries the nodes assigned to the specified slot and flattens nested slots. Use this when you need to observe or react to slotted content. + +## Decorators not yet used in 2nd-gen + +The following Lit decorators are available but not currently used in 2nd-gen components. They are documented here so contributors know they exist. + +### @state() + +Marks a property as **internal reactive state**. Like `@property()`, changes trigger a re-render. Unlike `@property()`, `@state()` does not create an HTML attribute and is not part of the public API. + +```ts +import { state } from 'lit/decorators.js'; + +@state() +private _isOpen = false; +``` + +Use `@state()` for UI state that does not need to be set from HTML or by consumers. For example, whether a dropdown is currently open or a loading animation is playing. + +### @queryAll() + +Like `@query()`, but returns all matching elements using `querySelectorAll`. + +```ts +import { queryAll } from 'lit/decorators.js'; + +@queryAll('.item') +private items!: NodeListOf<HTMLElement>; +``` + +### @queryAsync() + +Like `@query()`, but returns a promise that resolves after `updateComplete`. Use it when you need the element after rendering is done. + +```ts +import { queryAsync } from 'lit/decorators.js'; + +@queryAsync('#dialog') +private dialog!: Promise<HTMLDialogElement>; +``` + +### @queryAssignedElements() + +Like `@queryAssignedNodes()`, but only returns **elements** (not text nodes). Also supports a `selector` option to filter by CSS selector. + +```ts +import { queryAssignedElements } from 'lit/decorators.js'; + +@queryAssignedElements({ slot: 'icon' }) +private icons!: Array<HTMLElement>; +``` + +### @eventOptions() + +Sets event listener options (capture, passive, once) on a method used as an event handler in a template. + +```ts +import { eventOptions } from 'lit/decorators.js'; + +@eventOptions({ passive: true }) +private handleScroll(e: Event) { + // ... +} +``` + +Then use it in the template: `@scroll=${this.handleScroll}`. + +## CEM and decorators + +The `@property()` decorator feeds the **Custom Elements Manifest** (CEM). Properties decorated with `@property()` are included in the CEM output, which tools like Storybook use to generate documentation and controls. + +`@state()` properties are **not** included in the CEM because they are internal. + +JSDoc tags on the class (like `@attribute`, `@slot`, `@element`) also feed CEM. See [JSDoc standards](07_jsdoc-standards.md) for details on which tags CEM consumes. diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/05_property-patterns.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/05_property-patterns.md new file mode 100644 index 00000000000..6e9405edfbf --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/05_property-patterns.md @@ -0,0 +1,222 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Property patterns + +<!-- Document title (editable) --> + +# Property patterns + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Property ordering](#property-ordering) +- [Static properties](#static-properties) +- [Reactive properties with @property()](#reactive-properties-with-property) +- [Default reactive property (Lit default)](#default-reactive-property-lit-default) +- [Custom getter and setter](#custom-getter-and-setter) +- [Backing fields](#backing-fields) + +</details> + +<!-- Document content (editable) --> + +This guide explains how to declare and order properties in 2nd-gen component classes. It covers ordering rules, decorator usage, and when to use a custom getter/setter vs Lit's default behavior. + +## Property ordering + +Within each [class section](02_class-structure.md), order properties by access level: + +1. **public** properties first +2. **protected** properties second +3. **private** properties last + +Static properties appear with their section, not grouped separately. For example, `static readonly VARIANTS` goes in `API TO OVERRIDE`, not in a separate "statics" block. + +**Example from Badge.base.ts — API TO OVERRIDE section:** + +```ts +// Static declarations (public by default) +static readonly VARIANTS_COLOR: readonly string[]; +static readonly VARIANTS: readonly string[]; + +// Public reactive property +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +**Example from Badge.base.ts — SHARED API section:** + +```ts +// Public static constants +static readonly FIXED_VALUES: readonly string[] = FIXED_VALUES; +static readonly VARIANTS_SEMANTIC: readonly string[] = BADGE_VARIANTS_SEMANTIC; + +// Public getter/setter +@property({ reflect: true }) +public get fixed(): FixedValues | undefined { ... } +public set fixed(fixed: FixedValues | undefined) { ... } + +// Private backing field +private _fixed?: FixedValues; +``` + +## Static properties + +Static properties hold values that are the same for every instance of a component. In 2nd-gen, they are used for: + +- Arrays of valid values (`VARIANTS`, `VALID_SIZES`, `STATIC_COLORS`) +- The `styles` getter in concrete classes + +Static properties always use `static readonly` and are typed as `readonly string[]` or a more specific readonly array type. + +```ts +// ✅ Good — static readonly with readonly array type +static readonly VARIANTS_COLOR: readonly string[]; + +// ❌ Bad — missing readonly on the property +static VARIANTS_COLOR: readonly string[]; + +// ❌ Bad — mutable array type +static readonly VARIANTS_COLOR: string[]; +``` + +In concrete classes, static overrides use `static override readonly`: + +```ts +// ✅ Good +static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; +``` + +## Reactive properties with @property() + +Use the `@property()` decorator for properties that are part of the component's public API. See [Lit decorators](04_lit-decorators.md) for full decorator options. + +Key rules: + +- Use `reflect: true` when the property should appear as an HTML attribute because it causes a visual effect in the DOM when present or updated. +- Use the `type` option to tell Lit how to convert the attribute value. +- Use the `attribute` option when the HTML attribute name differs from the property name (e.g. `static-color` → `staticColor`). + +**Example — reflected string property (Badge.base.ts):** + +```ts +@property({ type: String, reflect: true }) +public variant: BadgeVariant = 'informative'; +``` + +**Example — reflected boolean property (Badge.ts):** + +```ts +@property({ type: Boolean, reflect: true }) +public subtle: boolean = false; +``` + +**Example — custom attribute name (ProgressCircle.base.ts):** + +```ts +@property({ type: String, reflect: true, attribute: 'static-color' }) +public staticColor?: ProgressCircleStaticColor; +``` + +**Example — non-reflected property (ProgressCircle.base.ts):** + +```ts +@property({ type: String }) +public label = ''; +``` + +## Default reactive property (Lit default) + +Most properties should use **Lit's default reactive behavior** — just add the `@property()` decorator and set a default value. Lit handles attribute conversion, change detection, and re-rendering automatically. + +**Use Lit's default when:** + +- The property is a simple value (string, number, boolean) +- No side effects are needed when the property changes +- No special attribute handling is needed + +```ts +// ✅ Good — Lit's default behavior is sufficient +@property({ type: Boolean, reflect: true }) +public indeterminate = false; + +@property({ type: Number }) +public progress = 0; +``` + +## Custom getter and setter + +In some cases, you need a custom getter and setter instead of Lit's default. This is less common and should only be used when Lit's default is not enough. + +**Use a custom getter/setter when:** + +- You need to run side effects when the property changes (e.g. manually setting an attribute) +- You need to validate or transform the value before storing it +- The property has non-standard attribute handling + +**Example from Badge.base.ts — custom getter/setter for `fixed`:** + +```ts +@property({ reflect: true }) +public get fixed(): FixedValues | undefined { + return this._fixed; +} + +public set fixed(fixed: FixedValues | undefined) { + if (fixed === this.fixed) { + return; + } + const oldValue = this.fixed; + this._fixed = fixed; + if (fixed) { + this.setAttribute('fixed', fixed); + } else { + this.removeAttribute('fixed'); + } + this.requestUpdate('fixed', oldValue); +} + +private _fixed?: FixedValues; +``` + +This custom setter manually manages the attribute and calls `requestUpdate` to trigger a re-render. The `@todo` on this property in the codebase notes that this may be replaceable with Lit's default behavior in the future. + +```ts +// ✅ Good — custom getter/setter when side effects are needed +@property({ reflect: true }) +public get fixed(): FixedValues | undefined { + return this._fixed; +} + +// ❌ Bad — using a custom getter/setter when Lit's default would work +@property({ type: Boolean, reflect: true }) +public get subtle(): boolean { + return this._subtle; +} +public set subtle(value: boolean) { + this._subtle = value; + this.requestUpdate('subtle'); +} +private _subtle = false; +// This could just be: public subtle: boolean = false; +``` + +## Backing fields + +When you use a custom getter/setter, you need a **backing field** to store the actual value. Backing fields are `private` and start with an underscore. + +```ts +// ✅ Good — underscore prefix, private, typed +private _fixed?: FixedValues; +private _variant: AlertBannerVariants = ''; + +// ❌ Bad — no underscore prefix +private fixed?: FixedValues; + +// ❌ Bad — protected instead of private +protected _fixed?: FixedValues; +``` + +Place the backing field right after the setter, in the same section as the getter/setter pair. diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/06_method-patterns.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/06_method-patterns.md new file mode 100644 index 00000000000..8daee6e48cb --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/06_method-patterns.md @@ -0,0 +1,266 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Method patterns + +<!-- Document title (editable) --> + +# Method patterns + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Method ordering](#method-ordering) +- [Lifecycle methods](#lifecycle-methods) + - [Lifecycle method selection](#lifecycle-method-selection) +- [ARIA role assignment](#aria-role-assignment) +- [The override keyword](#the-override-keyword) +- [Event handlers](#event-handlers) +- [Private helpers](#private-helpers) + +</details> + +<!-- Document content (editable) --> + +This guide explains how to order and name methods in 2nd-gen component classes. + +## Method ordering + +Within the [IMPLEMENTATION section](02_class-structure.md#section-implementation) of a base class, or the [RENDERING & STYLING section](02_class-structure.md#section-rendering-and-styling) of a concrete class, order methods by access level: + +1. **public** methods first +2. **protected** methods second (including lifecycle) +3. **private** methods last + +**Example from ProgressCircle.base.ts — IMPLEMENTATION section:** + +```ts +// Protected methods (lifecycle and helpers) +protected makeRotation(rotation: number): string | undefined { ... } +protected handleSlotchange(): void { ... } +protected override firstUpdated(changes: PropertyValues): void { ... } + +// Private methods +private formatProgress(): string { ... } + +// Protected lifecycle (later in call order) +protected override updated(changes: PropertyValues): void { ... } +``` + +## Lifecycle methods + +Lit components have lifecycle methods that run at specific times. These are the lifecycle methods used in 2nd-gen, in the order Lit calls them: + +| Method | When it runs | Common use | +|--------|-------------|------------| +| `connectedCallback()` | Element added to DOM | Set up event listeners, observers | +| `firstUpdated(changes)` | After the first render | One-time DOM setup (e.g. set ARIA role) | +| `update(changes)` | Before each render | Pre-render validation | +| `render()` | Each render cycle | Return the template | +| `updated(changes)` | After each render | Post-render DOM work | +| `disconnectedCallback()` | Element removed from DOM | Clean up listeners, observers | + +### Lifecycle method selection + +Choose the correct lifecycle method based on what you need to do: + +| Task | Method | Reason | +|------|--------|--------| +| Validate property values | `update()` | Runs before render; can log warnings before DOM changes | +| Set ARIA attributes based on properties | `updated()` | Runs after render; DOM is available | +| One-time ARIA role setup | `firstUpdated()` | Only runs once; role should not change | +| Pre-render state preparation | `update()` | Prepare state before template is evaluated | +| Set up mutation observers | `connectedCallback()` | Needs DOM context | +| Clean up observers | `disconnectedCallback()` | Element leaving DOM | + +**Validation in update():** + +Debug-mode validation should run in `update()` so warnings appear before the render: + +```ts +protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + // Validate variant, size, etc. + } +} +``` + +**ARIA in updated():** + +ARIA attribute changes that depend on property values should run in `updated()`: + +```ts +protected override updated(changed: PropertyValues<this>): void { + super.updated(changed); + if (changed.has('vertical')) { + if (this.vertical) { + this.setAttribute('aria-orientation', 'vertical'); + } else { + this.removeAttribute('aria-orientation'); + } + } +} +``` + +**Example — firstUpdated for one-time setup (Divider.base.ts):** + +```ts +protected override firstUpdated(changed: PropertyValues<this>): void { + super.firstUpdated(changed); + this.setAttribute('role', 'separator'); +} +``` + +**Example — update for validation (Badge.base.ts):** + +```ts +protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + const constructor = this.constructor as typeof BadgeBase; + if (!constructor.VARIANTS.includes(this.variant)) { + window.__swc.warn(this, /* ... */); + } + } +} +``` + +**Example — updated for reactive DOM changes (Divider.base.ts):** + +```ts +protected override updated(changed: PropertyValues<this>): void { + super.updated(changed); + if (changed.has('vertical')) { + if (this.vertical) { + this.setAttribute('aria-orientation', 'vertical'); + } else { + this.removeAttribute('aria-orientation'); + } + } +} +``` + +**Example — render in concrete class (Badge.ts):** + +```ts +protected override render(): TemplateResult { + return html` + <div class=${classMap({ ['swc-Badge']: true })}> + <!-- ...template... --> + </div> + `; +} +``` + +Always call `super.methodName()` at the start of lifecycle overrides (except `render()`). This ensures the parent class behavior runs first. + +```ts +// ✅ Good — call super first +protected override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + this.setAttribute('role', 'separator'); +} + +// ❌ Bad — forgetting to call super +protected override firstUpdated(changed: PropertyValues): void { + this.setAttribute('role', 'separator'); +} +``` + +## ARIA role assignment + +Components should be opinionated about their semantic role. Set the role unconditionally in `firstUpdated()` — do not check for an existing role attribute: + +```ts +// ✅ Good — unconditional role assignment +protected override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + this.setAttribute('role', 'separator'); +} + +// ❌ Bad — conditional role assignment +protected override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + if (!this.hasAttribute('role')) { + this.setAttribute('role', 'separator'); + } +} +``` + +**Rationale:** Components should express their semantic purpose clearly. If a consumer needs a different role, they can override it in their own code after the component renders. Checking for an existing role adds complexity and can mask misuse. + +## The override keyword + +Always use the `override` keyword when overriding lifecycle methods or any method from the parent class. This tells TypeScript the method must exist in the parent. See [TypeScript modifier keywords](03_typescript-modifiers.md#override) for more. + +```ts +// ✅ Good +protected override render(): TemplateResult { ... } +protected override update(changedProperties: PropertyValues): void { ... } + +// ❌ Bad — missing override +protected render(): TemplateResult { ... } +protected update(changedProperties: PropertyValues): void { ... } +``` + +## Event handlers + +Event handler methods are named with a `handle` prefix followed by the event name or purpose. + +**Example from AlertBanner.base.ts:** + +```ts +protected handleKeydown(event: KeyboardEvent): void { + if (event.code === 'Escape' && this.dismissible) { + this.shouldClose(); + } +} +``` + +**Example from ProgressCircle.base.ts:** + +```ts +protected handleSlotchange(): void { + const label = getLabelFromSlot(this.slotEl); + if (label) { + this.label = label; + } +} +``` + +Event handlers are typically `protected` so concrete classes can override them if needed. Use `private` if only the current class needs the handler. + +```ts +// ✅ Good — clear naming, typed parameter +protected handleKeydown(event: KeyboardEvent): void { ... } + +// ❌ Bad — unclear name +protected onKey(e: any): void { ... } + +// ❌ Bad — no event type +protected handleKeydown(event: Event): void { ... } +``` + +## Private helpers + +Private helpers handle internal logic that no subclass or consumer needs. Keep them small and focused. + +**Example from ProgressCircle.base.ts:** + +```ts +private formatProgress(): string { + // ...formats progress as locale-aware percentage string +} +``` + +```ts +// ✅ Good — small, single-purpose, private +private formatProgress(): string { ... } + +// ❌ Bad — too broad, doing too many things +private processState(): void { + // validates, formats, updates DOM, dispatches events... +} +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/07_jsdoc-standards.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/07_jsdoc-standards.md new file mode 100644 index 00000000000..10ae22fc219 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/07_jsdoc-standards.md @@ -0,0 +1,439 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / JSDoc standards + +<!-- Document title (editable) --> + +# JSDoc standards + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [When JSDoc is required](#when-jsdoc-is-required) +- [Minimum JSDoc requirements](#minimum-jsdoc-requirements) +- [Class-level JSDoc](#class-level-jsdoc) + - [@element](#element) + - [@slot](#slot) + - [@attribute](#attribute) + - [@property (class-level)](#property-class-level) + - [@example](#example) + - [@fires](#fires) +- [Member-level JSDoc](#member-level-jsdoc) + - [@internal](#internal) + - [@todo](#todo) + - [@param and @returns](#param-and-returns) + - [@private](#private) +- [Tags and the Custom Elements Manifest](#tags-and-the-custom-elements-manifest) +- [Formatting rules](#formatting-rules) + +</details> + +<!-- Document content (editable) --> + +This guide explains when and how to write JSDoc comments in 2nd-gen components. JSDoc serves two purposes: it documents the code for humans and agents, and it feeds the **Custom Elements Manifest** (CEM) that tools like Storybook use. + +## When JSDoc is required + +| Location | Required | Purpose | +|----------|----------|---------| +| Class declaration (base) | Yes | Describes the component, declares slots and attributes | +| Class declaration (concrete) | Yes | Declares `@element`, `@example`, and `@slot` (if concrete-only) | +| Public properties | Yes | Describes what the property does | +| Protected getters | Yes, if non-obvious | Explains purpose for subclass authors | +| Static readonly members | Yes | Marks as `@internal` and describes the array | +| Private members | Optional | Useful for complex backing fields or helpers | +| Lifecycle methods | Optional | Only if the logic is non-obvious | + +## Minimum JSDoc requirements + +**Base classes must have:** + +- Component description +- `@slot` tags for all slots +- `@attribute` tags for mixin-provided attributes (e.g., `size` from `SizedMixin`) + +**Concrete classes must have:** + +- `@element` tag with the custom element tag name +- At least one `@example` showing basic usage +- `@slot` tags for any concrete-only slots + +**Example — minimum concrete class JSDoc:** + +```ts +/** + * @element swc-divider + * + * @example + * <swc-divider></swc-divider> + * + * @example + * <swc-divider vertical></swc-divider> + */ +export class Divider extends DividerBase { +``` + +**Example — comprehensive concrete class JSDoc:** + +```ts +/** + * @element swc-badge + * + * @property {string} variant - The visual variant of the badge. + * @property {boolean} subtle - Whether the badge uses subtle styling. + * + * @example + * <swc-badge variant="positive">New</swc-badge> + * + * @example + * <swc-badge variant="neutral" fixed="fill"> + * <sp-icon-checkmark slot="icon"></sp-icon-checkmark> + * Verified + * </swc-badge> + */ +export class Badge extends BadgeBase { +``` + +## Class-level JSDoc + +Class-level JSDoc goes above the `export abstract class` or `export class` declaration. It describes the component and declares tags that CEM tools consume. + +### @element + +Declares the custom element tag name. Use this on the **concrete class** (in the SWC package). + +**Format:** `@element swc-<component-name>` + +**Example from Badge.ts:** + +```ts +/** + * @element swc-badge + * + * @example + * <swc-badge variant="positive">New</swc-badge> + */ +export class Badge extends BadgeBase { +``` + +**Example from ProgressCircle.ts:** + +```ts +/** + * @element swc-progress-circle + * + * @property {string} static-color - Static color variant for use on different backgrounds. + * @property {number} progress - Progress value between 0 and 100. + * + * @example + * <swc-progress-circle progress="75" label="Loading progress"></swc-progress-circle> + */ +export class ProgressCircle extends ProgressCircleBase { +``` + +### @slot + +Declares the slots the component provides. Use this on the **base class**. If the concrete class adds slots not in the base, declare them on the concrete class. + +**Format:** + +- Default slot: `@slot - Description` +- Named slot: `@slot name - Description` + +**Example from Badge.base.ts:** + +```ts +/** + * A badge is a non-interactive visual indicator used to highlight + * a status, category, or other metadata. + * + * @attribute {ElementSize} size - The size of the badge. + * + * @slot - Text label of the badge. + * @slot icon - Optional icon that appears to the left of the label + */ +export abstract class BadgeBase extends SizedMixin(...) { +``` + +**Example from StatusLight.base.ts:** + +```ts +/** + * A status light is a great way to convey semantic meaning... + * + * @slot - The text label of the status light. + */ +export abstract class StatusLightBase extends SizedMixin(...) { +``` + +### @attribute + +Declares attributes that come from mixins and are not visible as `@property()` decorators on the class itself. This helps CEM and documentation tools discover these attributes. + +**Format:** `@attribute {Type} name - Description` + +**Example from Badge.base.ts:** + +```ts +/** + * @attribute {ElementSize} size - The size of the badge. + * + * @slot - Text label of the badge. + */ +``` + +Use `@attribute` when: + +- A mixin (like `SizedMixin`) adds a property that consumers set via HTML attributes. +- The property is not declared directly on the class. + +### @property (class-level) + +Declares properties at the class level for CEM tools. This is different from the `@property()` decorator — this is a JSDoc tag that lists properties on the class documentation. + +**Format:** `@property {Type} name - Description` + +**Example from ProgressCircle.ts:** + +```ts +/** + * @element swc-progress-circle + * + * @property {string} static-color - Static color variant for use on different backgrounds. + * @property {number} progress - Progress value between 0 and 100. + * @property {boolean} indeterminate - Indeterminate state for loading. + * @property {string} size - Size of the component. + * @property {string} label - Label for the component. + */ +``` + +Use class-level `@property` when you want to document a property that is inherited from the base class but should appear in the concrete class's CEM output. + +### @example + +Shows how to use the component in HTML. Use this on the **concrete class**. Include at least one simple example and one more complex example when relevant. + +**Format:** + +```ts +/** + * @example + * <swc-badge variant="positive">New</swc-badge> + * + * @example + * <swc-badge variant="neutral" fixed="fill"> + * <sp-icon-checkmark slot="icon"></sp-icon-checkmark> + * Verified + * </swc-badge> + */ +``` + +For non-HTML examples (like controller usage), use a fenced code block: + +```ts +/** + * @example + * ```typescript + * protected override updated(changes: PropertyValues): void { + * // ... + * } + * ``` + */ +``` + +### @fires + +Declares custom events the component dispatches. This tag is consumed by CEM and should be used when a component dispatches any custom event. + +**When to use:** + +- The component dispatches a `CustomEvent` with `dispatchEvent()` +- The event is part of the component's public API (consumers listen for it) + +**Format:** `@fires event-name - Description` + +**Example:** + +```ts +/** + * @element swc-alert-banner + * + * @fires close - Dispatched when the banner is dismissed. + */ +export class AlertBanner extends AlertBannerBase { +``` + +**Event naming conventions:** + +- Use lowercase, kebab-case event names: `close`, `value-change`, `selection-change` +- Match standard DOM event names where applicable: `change`, `input` +- Prefix with `swc-` only for events that need namespacing to avoid conflicts + +## Member-level JSDoc + +Member-level JSDoc goes above individual properties, methods, getters, and setters. + +### @internal + +Marks a member as **not part of the public API**. Internal members are hidden from documentation and should not be used by consumers. CEM tools exclude `@internal` members from the public manifest. + +**Format:** `@internal` (standalone or with description) + +**When to use:** + +- Static readonly arrays (e.g. `VARIANTS`, `VALID_SIZES`) +- Getters used only for rendering (e.g. `hasIcon`) +- Any member that consumers should not rely on + +**Example — standalone (Badge.ts):** + +```ts +/** + * @internal + */ +static override readonly VARIANTS_COLOR = BADGE_VARIANTS_COLOR; +``` + +**Example — with description (Badge.base.ts):** + +```ts +/** + * @internal + * + * A readonly array of the valid color variants for the badge. + * + * Concrete classes override this property with their own set of color + * variants. + */ +static readonly VARIANTS_COLOR: readonly string[]; +``` + +```ts +// ✅ Good — @internal on the first line, description below +/** + * @internal + * + * A readonly array of the valid color variants for the badge. + */ + +// ❌ Bad — description before @internal +/** + * A readonly array of the valid color variants for the badge. + * + * @internal + */ +``` + +The convention in 2nd-gen is to put `@internal` first, then a blank line, then the description. + +### @todo + +Marks future work or known issues. Use it to flag things that need attention later. + +**Format:** `@todo Description of what needs to be done` + +**Example from Badge.base.ts:** + +```ts +/** + * The fixed position of the badge. + * + * @todo The purpose of the bespoke getter and setter is unclear. Consider + * replacing with Lit's default reactive property behavior. + */ +``` + +**Example from Badge.ts:** + +```ts +/** + * Whether the badge is subtle. + * + * @todo This can be moved to the base class once we are no longer maintaining 1st-gen. + */ +``` + +### @param and @returns + +Standard JSDoc tags for function parameters and return values. Use them on methods that have non-obvious parameters. + +**Format:** + +- `@param {Type} name - Description` +- `@returns {Type} Description` + +```ts +// ✅ Good — describes non-obvious parameter +/** + * Creates a CSS rotation string for the progress indicator. + * + * @param rotation - The rotation angle in degrees + * @returns The CSS rotation value, or undefined if not needed + */ +protected makeRotation(rotation: number): string | undefined { ... } +``` + +`@param` and `@returns` are optional when the types and names are self-explanatory. + +### @private + +Marks a method as private for documentation tools. Use the TypeScript `private` keyword instead when possible. The JSDoc `@private` tag is only needed in rare cases where TypeScript visibility is not sufficient (e.g. in plain JavaScript files or for documentation tool compatibility). + +## Tags and the Custom Elements Manifest + +The CEM analyzer reads JSDoc tags to generate the component manifest. Here is which tags it consumes: + +| Tag | CEM field | Level | +|-----|-----------|-------| +| `@element` | Tag name | Class | +| `@slot` | Slots | Class | +| `@attribute` | Attributes | Class | +| `@property` (JSDoc) | Properties | Class | +| `@fires` | Events | Class | +| `@example` | Examples | Class | +| `@internal` | Excludes from public API | Member | + +If a tag is missing, the CEM output may be incomplete, and Storybook or other tools may not generate the right documentation. + +## Formatting rules + +1. **Blank line between description and tags:** + +```ts +// ✅ Good +/** + * A badge is a non-interactive visual indicator. + * + * @slot - Text label of the badge. + */ + +// ❌ Bad — no blank line +/** + * A badge is a non-interactive visual indicator. + * @slot - Text label of the badge. + */ +``` + +2. **Tag line spacing:** ESLint enforces `jsdoc/tag-lines` with `startLines: 1`. This means there should be one blank line before each tag group and no blank lines after the last tag. + +3. **No extra spaces before tags:** + +```ts +// ✅ Good + * @internal + +// ❌ Bad — extra space before @ + * @internal +``` + +4. **Use sentence case for descriptions.** Do not capitalize every word. + +```ts +// ✅ Good + * A readonly array of the valid color variants for the badge. + +// ❌ Bad + * A Readonly Array Of The Valid Color Variants For The Badge. +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/08_component-types.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/08_component-types.md new file mode 100644 index 00000000000..6d4caf546eb --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/08_component-types.md @@ -0,0 +1,523 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Component types + +<!-- Document title (editable) --> + +# Component types + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Purpose](#purpose) +- [File location and naming](#file-location-and-naming) +- [Naming conventions](#naming-conventions) + - [Constant prefixes](#constant-prefixes) + - [Type names](#type-names) + - [Naming rule](#naming-rule) +- [File structure](#file-structure) + - [Section order](#section-order) + - [Section separators](#section-separators) +- [Constant patterns](#constant-patterns) + - [Sizes](#sizes) + - [Variants with S1/S2 split](#variants-with-s1s2-split) + - [Simple variant arrays](#simple-variant-arrays) + - [Static colors](#static-colors) + - [Non-variant constants](#non-variant-constants) +- [Type derivation patterns](#type-derivation-patterns) +- [S1 removal strategy](#s1-removal-strategy) + - [Dependency direction](#dependency-direction) + - [Removing S1](#removing-s1) +- [Reference template](#reference-template) +- [Anti-patterns](#anti-patterns) + - [Suffixing S2 names](#suffixing-s2-names) + - [S2 arrays spreading from S1](#s2-arrays-spreading-from-s1) + - [Union types for base class](#union-types-for-base-class) + - [Widening with explicit type annotations](#widening-with-explicit-type-annotations) + - [Mixing shared and S1 content without separators](#mixing-shared-and-s1-content-without-separators) + - [Merged multi-word prefixes](#merged-multi-word-prefixes) +- [Checklist](#checklist) + +</details> + +<!-- Document content (editable) --> + +This guide defines patterns for the `*.types.ts` files in `core/components/*/`. These files contain the constants and types that 2nd-gen component classes consume. + +> **Note:** This guide was migrated from `02_style-guide/03_component-types.md`. The original file has been removed. + +## Purpose + +Types files serve three goals: + +1. **Define valid values** — sizes, variants, static colors, and other enumerable properties as `as const` arrays +2. **Derive TypeScript types** — narrow union types extracted from those arrays for compile-time safety +3. **Define the canonical value sets** — S2 values are the source of truth; no need to maintain S1-only values + +## File location and naming + +| Item | Convention | Example | +| ---- | ---------- | ------- | +| Location | `core/components/{component}/` | `core/components/badge/` | +| File name | `{Component}.types.ts` | `Badge.types.ts` | +| Export | Barrel-exported from `index.ts` | `export * from './Badge.types.js';` | + +## Naming conventions + +> **See also:** [Naming conventions](10_naming-conventions.md) for the full naming rules, including CSS class names and the rationale for underscore-separated prefixes. + +### Constant prefixes + +Use the component name in `UPPER_SNAKE_CASE` with underscores separating words: + +| Component | Prefix | +| --------- | ------ | +| Badge | `BADGE_` | +| Status Light | `STATUS_LIGHT_` | +| Progress Circle | `PROGRESS_CIRCLE_` | +| Action Button | `ACTION_BUTTON_` | + +Do not merge multi-word names (e.g., `STATUSLIGHT_`). Consistent underscore separators make constants greppable and predictable. + +**Renaming existing merged prefixes:** If a component's types file in core already uses a merged prefix (e.g., `STATUSLIGHT_`), rename the constants to the underscore-separated form (`STATUS_LIGHT_`) in core. Since 1st-gen does not import from core, this is a safe rename with no cross-generation impact. + +### Type names + +Use the component name in `PascalCase` matching the class name: + +| Component | Type prefix | Example | +| --------- | ----------- | ------- | +| Badge | `Badge` | `BadgeVariant`, `BadgeSize` | +| Status Light | `StatusLight` | `StatusLightVariant` | +| Progress Circle | `ProgressCircle` | `ProgressCircleStaticColor` | + +### Naming rule + +**Names in core types files are the canonical S2 values.** No `_S1` or `_S2` suffixes are needed. + +| Scope | Name example | When to use | +| ----- | ------------ | ----------- | +| Canonical | `BADGE_VARIANTS_COLOR` | Values supported in 2nd-gen | +| Canonical | `BadgeVariant` | Type for 2nd-gen consumers | + +> **Note:** S1-only constants and types (`_S1` suffix) are no longer needed in core. If you encounter them in existing files, they can be removed. 1st-gen manages its own values independently. + +## File structure + +### Section order + +Organize the file in this order: + +1. **Copyright header** +2. **Imports** (typically only `ElementSize` from core mixins) +3. **Constants** — sizes (e.g., `BADGE_VALID_SIZES`), variant arrays (e.g., `BADGE_VARIANTS_COLOR`, `BADGE_VARIANTS_SEMANTIC`), non-variant constants (e.g., `FIXED_VALUES`) +4. **Canonical constants** — composed arrays that spread from base arrays (e.g., `BADGE_VARIANTS`) +5. **Types** — types derived from the const arrays (e.g., `BadgeSize`, `BadgeColorVariant`, `BadgeVariant`) + +> **Note:** S1-only constants and types are no longer needed in core. Since 1st-gen does not import from core, you only need to define the canonical S2 values here. If you encounter existing S1 sections in types files, they can be removed. + +### Section separators + +Use the same ASCII separator pattern as base and SWC classes: + +```typescript +// ────────────────── +// SHARED +// ────────────────── + +// ────────────────────────────────────────── +// S1-ONLY (remove with 1st-gen) +// ────────────────────────────────────────── + +// ────────────────── +// CANONICAL +// ────────────────── + +// ────────────────── +// TYPES +// ────────────────── +``` + +The `S1-ONLY (remove with 1st-gen)` label makes removal mechanical — delete everything between that separator and the next. + +## Constant patterns + +Constants use `as const` to preserve literal types. When a shared constraint type exists, add `satisfies` to get compile-time validation of each value. The two patterns serve different purposes: + +| Pattern | Purpose | When to use | +| ------- | ------- | ----------- | +| `as const` | Preserves literal types for type derivation | All constant arrays | +| `as const satisfies readonly T[]` | Adds compile-time validation against a shared type | When a constraint type exists (sizes, static colors) | + +> **When to introduce `satisfies` for a new category:** If a shared constraint type is added to core (e.g., a `StaticColor` type for `'white' | 'black'`), update the guidance here and add `satisfies` to the corresponding constant pattern. The rule is: `satisfies` is warranted when a cross-component type already exists to validate against. + +### Sizes + +Sizes validate against the shared `ElementSize` union defined in `SizedMixin`. Use `as const satisfies readonly ElementSize[]` to catch typos at compile time: + +```typescript +import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; + +export const BADGE_VALID_SIZES = ['s', 'm', 'l', 'xl'] as const satisfies readonly ElementSize[]; +``` + +This gives you: + +- **Narrow literal tuple type** — TypeScript infers `readonly ['s', 'm', 'l', 'xl']` +- **Compile-time validation** — a typo like `'small'` fails because it doesn't satisfy `ElementSize` + +The `readonly` in `satisfies readonly T[]` is required because `as const` produces a readonly tuple, which cannot be assigned to a mutable array type. + +Do not add an explicit type annotation (e.g., `: ElementSize[]`) — it widens the type back to a mutable array, negating the benefit of `as const`. + +### Variants with S1/S2 split + +When a component has multiple groups of variants (e.g., semantic vs color), define base arrays separately and compose them into a canonical array: + +```typescript +// ── SHARED ── + +// Semantic variants +export const BADGE_VARIANTS_SEMANTIC = [ + 'accent', + 'informative', + 'neutral', + 'positive', + 'notice', + 'negative', +] as const; + +// Canonical color set (source of truth) +export const BADGE_VARIANTS_COLOR = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', + 'pink', + 'turquoise', + 'brown', + 'cinnamon', + 'silver', +] as const; + +// ── S1-ONLY (remove with 1st-gen) ── + +// S1 subset — satisfies ensures all values exist in the canonical set +export const BADGE_VARIANTS_COLOR_S1 = [ + 'fuchsia', + 'indigo', + 'magenta', + 'purple', + 'seafoam', + 'yellow', +] as const satisfies readonly BadgeColorVariant[]; + +export const BADGE_VARIANTS_S1 = [ + ...BADGE_VARIANTS_SEMANTIC, + ...BADGE_VARIANTS_COLOR_S1, +] as const; + +// ── CANONICAL ── + +export const BADGE_VARIANTS = [ + ...BADGE_VARIANTS_SEMANTIC, + ...BADGE_VARIANTS_COLOR, +] as const; +``` + +**Key rules:** + +- **Canonical base arrays go in SHARED** — `BADGE_VARIANTS_COLOR` defines the source-of-truth values and must be available before the S1-ONLY section so `satisfies` can reference its derived type +- **S1 subset arrays validate against the canonical type** — `satisfies readonly BadgeColorVariant[]` catches invalid S1 values at compile time (e.g., a color that was removed from the canonical set) +- **Canonical arrays never reference S1 arrays** — each array is self-contained or spreads only from shared constants. This prevents deletion of S1 content from breaking canonical arrays +- **CANONICAL section contains only composed arrays** — arrays that spread from shared bases (e.g., `BADGE_VARIANTS` combines semantic and color) + +### Simple variant arrays + +When a component has a single set of values, a single constant is sufficient. + +```typescript +export const ASSET_VARIANTS = ['file', 'folder'] as const; +``` + +### Static colors + +Follow the same shared/S1/canonical pattern as variants: + +```typescript +export const PROGRESS_CIRCLE_STATIC_COLORS_S1 = ['white'] as const; + +export const PROGRESS_CIRCLE_STATIC_COLORS = ['white', 'black'] as const; +``` + +Static colors also have a small, known set of valid values (`'white'` and `'black'`). If the project defines a shared `StaticColor` constraint type, use `satisfies` to validate. Otherwise, `as const` is sufficient since the values are self-evident. + +### Non-variant constants + +Constants that are not split across generations (e.g., `FIXED_VALUES` for Badge) belong in the shared section with no suffix: + +```typescript +export const FIXED_VALUES = [ + 'block-start', + 'block-end', + 'inline-start', + 'inline-end', +] as const; +``` + +## Type derivation patterns + +All types are derived from constants using indexed access: + +```typescript +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; +``` + +Group types at the bottom of the file in this order: + +1. **Shared types** — derived from shared constants (including canonical base arrays) + + ```typescript + export type FixedValues = (typeof FIXED_VALUES)[number]; + export type BadgeSize = (typeof BADGE_VALID_SIZES)[number]; + export type BadgeSemanticVariant = (typeof BADGE_VARIANTS_SEMANTIC)[number]; + export type BadgeColorVariant = (typeof BADGE_VARIANTS_COLOR)[number]; + ``` + +2. **S1-only types** — mark with an inline comment for removal + + ```typescript + export type BadgeColorVariantS1 = (typeof BADGE_VARIANTS_COLOR_S1)[number]; // @todo remove with 1st-gen + export type BadgeVariantS1 = (typeof BADGE_VARIANTS_S1)[number]; // @todo remove with 1st-gen + ``` + +3. **Canonical types** — the clean, unsuffixed names that 2nd-gen consumers use + + ```typescript + export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; + ``` + +> **No union types needed.** Because the canonical set (S2) is always a superset of S1, `BadgeVariant` already covers all valid values. The base class uses the canonical type, and S1 consumers narrow to the `_S1` type via `override`. + +## S1 removal strategy + +### Dependency direction + +The dependency always flows toward S1: + +```text +Shared constants (base arrays + canonical types) + ←── Canonical composed arrays spread from shared + ←── S1 arrays validate against shared types via satisfies +``` + +This means: + +- **Canonical base arrays and types live in SHARED** — `BADGE_VARIANTS_COLOR` and `BadgeColorVariant` are defined before S1-ONLY +- **S1 arrays validate against canonical types** — `BADGE_VARIANTS_COLOR_S1` uses `satisfies readonly BadgeColorVariant[]` +- **Canonical composed arrays never reference S1 arrays** — `BADGE_VARIANTS` does not spread `BADGE_VARIANTS_S1` +- **S1 arrays may spread from shared arrays** — `BADGE_VARIANTS_S1` spreads `BADGE_VARIANTS_SEMANTIC` (shared) +- **Deleting S1 content never breaks shared or canonical content** + +### Removing S1 + +When 1st-gen is retired, the removal process for each types file is: + +1. Delete the `S1-ONLY` section (constants and types) +2. Delete the `S1-ONLY` section separator +3. Remove the `@todo` comment about S1 removal +4. Optionally, if a shared constant was only shared for S1's benefit and is identical to the canonical array, inline it + +No renames. No changes to canonical type names. No breaking changes for 2nd-gen consumers. + +## Reference template + +A complete types file for a component with sized variants and an S1/S2 color split: + +```typescript +/** + * Copyright 2026 Adobe. All rights reserved. + * ...license header... + */ + +/* + * @todo The S1 types can be removed once we are no longer maintaining 1st-gen. + */ + +import type { ElementSize } from '@spectrum-web-components/core/mixins/index.js'; + +// ────────────────── +// SHARED +// ────────────────── + +export const COMPONENT_VALID_SIZES = [ + 's', + 'm', + 'l', + 'xl', +] as const satisfies readonly ElementSize[]; + +export const COMPONENT_VARIANTS_SEMANTIC = [ + 'accent', + 'informative', + 'neutral', + 'positive', + 'notice', + 'negative', +] as const; + +export const COMPONENT_VARIANTS_COLOR = [ + 'fuchsia', + 'indigo', + 'magenta', + 'pink', + 'turquoise', +] as const; + +// ────────────────────────────────────────── +// S1-ONLY (remove with 1st-gen) +// ────────────────────────────────────────── + +export const COMPONENT_VARIANTS_COLOR_S1 = [ + 'fuchsia', + 'indigo', + 'magenta', +] as const satisfies readonly ComponentColorVariant[]; + +export const COMPONENT_VARIANTS_S1 = [ + ...COMPONENT_VARIANTS_SEMANTIC, + ...COMPONENT_VARIANTS_COLOR_S1, +] as const; + +// ────────────────── +// CANONICAL +// ────────────────── + +export const COMPONENT_VARIANTS = [ + ...COMPONENT_VARIANTS_SEMANTIC, + ...COMPONENT_VARIANTS_COLOR, +] as const; + +// ────────────────── +// TYPES +// ────────────────── + +// Shared +export type ComponentSize = (typeof COMPONENT_VALID_SIZES)[number]; +export type ComponentSemanticVariant = (typeof COMPONENT_VARIANTS_SEMANTIC)[number]; +export type ComponentColorVariant = (typeof COMPONENT_VARIANTS_COLOR)[number]; + +// S1-only (remove with 1st-gen) +export type ComponentColorVariantS1 = (typeof COMPONENT_VARIANTS_COLOR_S1)[number]; // @todo remove with 1st-gen +export type ComponentVariantS1 = (typeof COMPONENT_VARIANTS_S1)[number]; // @todo remove with 1st-gen + +// Canonical +export type ComponentVariant = (typeof COMPONENT_VARIANTS)[number]; +``` + +## Anti-patterns + +### Suffixing S2 names + +```typescript +// ❌ Creates a future rename burden +export const BADGE_VARIANTS_S2 = [...] as const; +export type BadgeVariantS2 = ...; + +// ✅ Unsuffixed names are canonical (S2) +export const BADGE_VARIANTS = [...] as const; +export type BadgeVariant = ...; +``` + +### S2 arrays spreading from S1 + +```typescript +// ❌ Deleting S1 breaks S2 +export const BADGE_VARIANTS_COLOR_S2 = [ + ...BADGE_VARIANTS_COLOR_S1, + 'pink', +] as const; + +// ✅ S2 (canonical) is self-contained +export const BADGE_VARIANTS_COLOR = [ + 'fuchsia', + 'indigo', + 'pink', +] as const; +``` + +### Union types for base class + +```typescript +// ❌ Unnecessary indirection +export type BadgeVariant = BadgeVariantS1 | BadgeVariantS2; + +// ✅ Canonical type already covers the full set +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; +``` + +Since S2 is a superset of S1, the canonical type works for the base class. S1 consumers narrow via `override`. + +### Widening with explicit type annotations + +```typescript +// ❌ : ElementSize[] widens the type, negating as const +export const SIZES: ElementSize[] = ['s', 'm'] as const satisfies readonly ElementSize[]; + +// ✅ Let the type be inferred from as const +export const SIZES = ['s', 'm'] as const satisfies readonly ElementSize[]; +``` + +### Mixing shared and S1 content without separators + +```typescript +// ❌ No clear boundary — which lines are S1? +export const BADGE_VARIANTS_SEMANTIC = [...] as const; +export const BADGE_VARIANTS_COLOR = [...] as const; +export const BADGE_VARIANTS_COLOR_S1 = [...] as const; + +// ✅ Separated and labeled — canonical base arrays in SHARED, S1 subset validates against them +// ── SHARED ── +export const BADGE_VARIANTS_SEMANTIC = [...] as const; +export const BADGE_VARIANTS_COLOR = [...] as const; + +// ── S1-ONLY (remove with 1st-gen) ── +export const BADGE_VARIANTS_COLOR_S1 = [...] as const satisfies readonly BadgeColorVariant[]; +``` + +### Merged multi-word prefixes + +```typescript +// ❌ Inconsistent, hard to grep +export const STATUSLIGHT_VARIANTS = [...] as const; + +// ✅ Underscore-separated, consistent +export const STATUS_LIGHT_VARIANTS = [...] as const; +``` + +## Checklist + +Use this when creating or reviewing a types file: + +- [ ] File is in `core/components/{component}/` and named `{Component}.types.ts` +- [ ] Barrel-exported from `index.ts` +- [ ] Constants use `UPPER_SNAKE_CASE` with underscored component prefix +- [ ] Types use `PascalCase` matching the component class name +- [ ] No `_S2` suffix on any constant or type +- [ ] Only S1-specific items have the `_S1` suffix +- [ ] Sizes use `as const satisfies readonly ElementSize[]` without explicit type annotation +- [ ] Variant arrays use `as const` +- [ ] Canonical base arrays (e.g., color variants) are in the SHARED section +- [ ] S1 subset arrays use `satisfies readonly CanonicalType[]` to validate against canonical types +- [ ] Canonical composed arrays do not spread from S1 arrays +- [ ] S1 arrays spread only from shared constants or are self-contained +- [ ] Sections are separated with ASCII separators (shared, S1-only, canonical, types) +- [ ] S1-only section is labeled `(remove with 1st-gen)` +- [ ] S1-only types have an inline `// @todo remove with 1st-gen` comment +- [ ] Types are derived via `(typeof CONSTANT)[number]` indexed access +- [ ] No union types combining S1 and S2 (canonical type is sufficient) +- [ ] `@todo` comment at top of file references S1 removal diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/09_rendering-patterns.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/09_rendering-patterns.md new file mode 100644 index 00000000000..b8a13f5a417 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/09_rendering-patterns.md @@ -0,0 +1,220 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Rendering patterns + +<!-- Document title (editable) --> + +# Rendering patterns + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Helper functions](#helper-functions) +- [Size modifier pattern](#size-modifier-pattern) +- [Inline SVG](#inline-svg) +- [classMap patterns](#classmap-patterns) + +</details> + +<!-- Document content (editable) --> + +This guide covers rendering-specific patterns for 2nd-gen component templates, including helper functions, size transformations, inline SVG accessibility, and classMap usage. + +## Helper functions + +For complex or reusable template fragments, define helper functions at the module level (after imports, before the class). This keeps the `render()` method clean and makes fragments reusable. + +**Example from Asset.ts:** + +```ts +import { html, TemplateResult } from 'lit'; + +// After imports, before class +const file = (label: string): TemplateResult => html` + <svg class="swc-Asset-file" role="img" aria-label=${label}>...</svg> +`; + +const folder = (label: string): TemplateResult => html` + <svg class="swc-Asset-folder" role="img" aria-label=${label}>...</svg> +`; + +export class Asset extends AssetBase { + protected override render(): TemplateResult { + return html` + ${when(this.variant === 'file', () => file(this.label))} + ${when(this.variant === 'folder', () => folder(this.label))} + `; + } +} +``` + +**When to use helper functions:** + +- Template fragment is used multiple times +- Fragment is complex (SVG, multiple elements) +- Fragment needs parameters (label, size, etc.) + +**When not to use helper functions:** + +- Simple conditional rendering (use `when` directly) +- Single-use template fragments (inline in `render()`) +- Fragment has no parameters + +```ts +// ✅ Good — complex fragment with parameters +const icon = (name: string): TemplateResult => html` + <svg class="swc-Icon" aria-label=${name}>...</svg> +`; + +// ❌ Bad — simple fragment that could be inline +const divider = (): TemplateResult => html`<hr />`; +``` + +## Size modifier pattern + +Size-based CSS classes use the size value uppercased. This produces classes like `swc-Badge--sizeS`, `swc-Badge--sizeM`, `swc-Badge--sizeL`. + +**Pattern:** + +```ts +class=${classMap({ + ['swc-Badge']: true, + [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null, +})} +``` + +The `?.toUpperCase()` handles the case where `size` might be undefined, and the condition `this.size != null` ensures the class is only added when size has a value. + +**Example from Badge.ts:** + +```ts +protected override render(): TemplateResult { + return html` + <div + class=${classMap({ + ['swc-Badge']: true, + [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null, + [`swc-Badge--${this.variant}`]: this.variant != null, + })} + > + <!-- ...content... --> + </div> + `; +} +``` + +**Example from Divider.ts:** + +```ts +class=${classMap({ + ['swc-Divider']: true, + [`swc-Divider--size${this.size?.toUpperCase()}`]: this.size != null, +})} +``` + +## Inline SVG + +When rendering inline SVGs, ensure accessibility by providing appropriate ARIA attributes. + +**Required attributes:** + +- `role="img"` — Identifies the SVG as an image for assistive technology +- `aria-label` — Provides the accessible name (or use `aria-labelledby` to reference another element) + +**Example:** + +```ts +const icon = (label: string): TemplateResult => html` + <svg + class="swc-Asset-icon" + role="img" + aria-label=${label} + viewBox="0 0 24 24" + > + <!-- SVG paths --> + </svg> +`; +``` + +**When to use `aria-hidden`:** + +If the SVG is purely decorative and provides no additional meaning (e.g., an icon next to visible text), use `aria-hidden="true"` instead: + +```ts +const decorativeIcon = (): TemplateResult => html` + <svg class="swc-Icon" aria-hidden="true" viewBox="0 0 24 24"> + <!-- SVG paths --> + </svg> +`; +``` + +## classMap patterns + +Use `classMap` from `lit/directives/class-map.js` for all dynamic class names. Use bracketed string keys for consistency: + +```ts +import { classMap } from 'lit/directives/class-map.js'; + +class=${classMap({ + ['swc-Badge']: true, // Bracketed string key + [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null, // Template literal + [`swc-Badge--${this.variant}`]: this.variant != null, // Template literal + ['swc-Badge--subtle']: this.subtle, // Boolean condition +})} +``` + +**Why bracketed keys:** + +- Consistent syntax across all entries (both static and computed) +- Required for computed keys (template literals) +- Makes the pattern visually uniform + +**Key patterns:** + +| Pattern | Example | Use case | +|---------|---------|----------| +| Static class | `['swc-Badge']: true` | Always present | +| Size modifier | `` [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null `` | Size-based styling | +| Variant modifier | `` [`swc-Badge--${this.variant}`]: this.variant != null `` | Variant-based styling | +| Boolean modifier | `['swc-Badge--subtle']: this.subtle` | Boolean property styling | +| Static color | `` [`swc-Badge--static${capitalize(this.staticColor)}`]: this.staticColor != null `` | Static color styling | + +**Complete example from Badge.ts:** + +```ts +protected override render(): TemplateResult { + return html` + <div + class=${classMap({ + ['swc-Badge']: true, + [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null, + [`swc-Badge--${this.variant}`]: this.variant != null, + ['swc-Badge--subtle']: this.subtle, + ['swc-Badge--outline']: this.outline, + })} + > + ${when(this.hasIcon, () => html`<slot name="icon"></slot>`)} + <slot></slot> + </div> + `; +} +``` + +```ts +// ✅ Good — clear boolean conditions, bracketed keys +class=${classMap({ + ['swc-Badge']: true, + ['swc-Badge--subtle']: this.subtle, +})} + +// ❌ Bad — string concatenation +class=${'swc-Badge' + (this.subtle ? ' swc-Badge--subtle' : '')} + +// ❌ Bad — inconsistent key syntax +class=${classMap({ + 'swc-Badge': true, // Unbracketed + [`swc-Badge--${this.variant}`]: true, // Bracketed +})} +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/10_naming-conventions.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/10_naming-conventions.md new file mode 100644 index 00000000000..bec7d88edd9 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/10_naming-conventions.md @@ -0,0 +1,231 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Naming conventions + +<!-- Document title (editable) --> + +# Naming conventions + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Class names](#class-names) +- [Property and method names](#property-and-method-names) +- [Type names](#type-names) +- [Constant names](#constant-names) +- [CSS class names](#css-class-names) +- [File names](#file-names) +- [Custom element tag names](#custom-element-tag-names) + +</details> + +<!-- Document content (editable) --> + +This guide lists the naming rules for all identifiers in 2nd-gen components. + +## Class names + +Use **PascalCase**. Base classes end with `Base`. Concrete classes use the plain component name. + +| Class | Pattern | Example | +|-------|---------|---------| +| Base class | `{Component}Base` | `BadgeBase`, `StatusLightBase`, `ProgressCircleBase` | +| Concrete class | `{Component}` | `Badge`, `StatusLight`, `ProgressCircle` | + +Multi-word component names keep each word capitalized: `StatusLight`, not `Statuslight`. + +```ts +// ✅ Good +export abstract class BadgeBase extends SizedMixin(...) { } +export class Badge extends BadgeBase { } + +// ❌ Bad — missing Base suffix +export abstract class Badge extends SizedMixin(...) { } + +// ❌ Bad — lowercase word +export abstract class StatuslightBase extends SizedMixin(...) { } +``` + +## Property and method names + +Use **camelCase** for all properties and methods. + +| Member | Example | +|--------|---------| +| Public property | `variant`, `staticColor`, `indeterminate` | +| Protected getter | `hasIcon` | +| Private backing field | `_fixed`, `_variant` | +| Lifecycle method | `firstUpdated`, `connectedCallback` | +| Event handler | `handleKeydown`, `handleSlotchange` | +| Private helper | `formatProgress`, `isValidVariant` | +| Controller | `languageResolver` | + +**Private backing fields** start with an underscore: `_fixed`, `_variant`, `_size`. No other properties use an underscore prefix. + +```ts +// ✅ Good +public staticColor?: ProgressCircleStaticColor; +private _fixed?: FixedValues; +protected handleKeydown(event: KeyboardEvent): void { } + +// ❌ Bad — snake_case +public static_color?: ProgressCircleStaticColor; + +// ❌ Bad — underscore on a public field +public _isOpen = false; // should be: private _isOpen = false; +``` + +The one exception for underscores is backing fields that pair with a custom getter/setter (see [Property patterns](05_property-patterns.md#backing-fields)). + +## Type names + +Use **PascalCase** matching the component class name. No `I` prefix for interfaces, no `T` prefix for types. + +| Type | Example | +|------|---------| +| Component variant | `BadgeVariant`, `StatusLightVariant` | +| Component size | `BadgeSize`, `ProgressCircleSize` | +| Static color | `ProgressCircleStaticColor`, `DividerStaticColor` | +| Semantic variant | `BadgeSemanticVariant` | + +See [Component types](08_component-types.md#type-names) for detailed naming and suffixing rules. + +```ts +// ✅ Good +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; + +// ❌ Bad — I prefix +export interface IBadgeVariant { } + +// ❌ Bad — T prefix +export type TBadgeVariant = string; +``` + +## Constant names + +Use **UPPER_SNAKE_CASE** with an underscore-separated component prefix. + +| Constant | Example | +|----------|---------| +| Valid sizes | `BADGE_VALID_SIZES`, `PROGRESS_CIRCLE_VALID_SIZES` | +| Variant arrays | `BADGE_VARIANTS_SEMANTIC`, `BADGE_VARIANTS_COLOR` | +| Non-variant constants | `FIXED_VALUES`, `DIVIDER_STATIC_COLORS` | + +Multi-word component names use underscores: `STATUS_LIGHT_`, not `STATUSLIGHT_`. + +See [Component types](08_component-types.md#constant-prefixes) for the full prefix rules. + +```ts +// ✅ Good +export const STATUS_LIGHT_VARIANTS_SEMANTIC = [...] as const; + +// ❌ Bad — merged prefix +export const STATUSLIGHT_VARIANTS_SEMANTIC = [...] as const; + +// ❌ Bad — camelCase +export const statusLightVariants = [...] as const; +``` + +**Critical rule: underscore-separated prefixes** + +Multi-word component names always use underscores between words. This ensures constants are greppable and consistent: + +```ts +// ✅ Good — consistent underscore separation +STATUS_LIGHT_VARIANTS +PROGRESS_CIRCLE_VALID_SIZES +ACTION_BUTTON_VARIANTS + +// ❌ Bad — merged words +STATUSLIGHT_VARIANTS +PROGRESSCIRCLE_VALID_SIZES +ACTIONBUTTON_VARIANTS +``` + +If existing code uses merged prefixes, rename to the underscore-separated form (see [Component types](08_component-types.md#constant-prefixes)). + +## CSS class names + +CSS classes use the `swc-` prefix with PascalCase component name and optional BEM-style modifiers: + +| Pattern | Example | +|---------|---------| +| Base class | `swc-Badge`, `swc-Divider`, `swc-StatusLight` | +| Size modifier | `swc-Badge--sizeS`, `swc-Divider--sizeM` | +| Variant modifier | `swc-Badge--positive`, `swc-Badge--subtle` | +| Element (rare) | `swc-Badge-icon`, `swc-Badge-label` | + +**Never use the `spectrum-` prefix** — this is a 1st-gen convention: + +```css +/* ✅ Good */ +.swc-Badge { } +.swc-Badge--positive { } + +/* ❌ Bad — 1st-gen prefix */ +.spectrum-Badge { } +.spectrum-Badge--positive { } +``` + +**Size modifier format:** + +Size modifiers use the size value uppercased: `--sizeS`, `--sizeM`, `--sizeL`, `--sizeXL`: + +```ts +[`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null +``` + +## File names + +Files use **PascalCase** for the component name and a dot-separated suffix that indicates the file's role. + +| File | Pattern | Example | +|------|---------|---------| +| Base class | `{Component}.base.ts` | `Badge.base.ts` | +| Concrete class | `{Component}.ts` | `Badge.ts` | +| Types | `{Component}.types.ts` | `Badge.types.ts` | +| Styles | `{component}.css` (lowercase) | `badge.css` | +| Index | `index.ts` | `index.ts` | +| Tests | `{component}.test.ts` (lowercase) | `badge.test.ts` | +| A11y tests | `{component}.a11y.spec.ts` (lowercase) | `badge.a11y.spec.ts` | +| Stories | `{component}.stories.ts` (lowercase) | `badge.stories.ts` | + +Note that TypeScript class files use PascalCase (`Badge.ts`), while CSS, test, and story files use lowercase (`badge.css`, `badge.test.ts`). + +```text +✅ Good +Badge.base.ts +Badge.ts +Badge.types.ts +badge.css +badge.test.ts + +❌ Bad +badge.base.ts (should be PascalCase) +Badge.css (should be lowercase) +Badge.test.ts (should be lowercase) +``` + +## Custom element tag names + +Custom element tags use the `swc-` prefix with lowercase kebab-case. + +| Component | Tag name | +|-----------|----------| +| Badge | `swc-badge` | +| Status Light | `swc-status-light` | +| Progress Circle | `swc-progress-circle` | +| Alert Banner | `swc-alert-banner` | + +```ts +// ✅ Good +defineElement('swc-badge', Badge); + +// ❌ Bad — no prefix +defineElement('badge', Badge); + +// ❌ Bad — camelCase +defineElement('swcBadge', Badge); +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/11_base-vs-concrete.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/11_base-vs-concrete.md new file mode 100644 index 00000000000..70b8817812a --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/11_base-vs-concrete.md @@ -0,0 +1,175 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Base class vs concrete class + +<!-- Document title (editable) --> + +# Base class vs concrete class + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Why two classes](#why-two-classes) +- [Core (base class) responsibilities](#core-base-class-responsibilities) +- [SWC (concrete class) responsibilities](#swc-concrete-class-responsibilities) +- [Decision guide](#decision-guide) +- [Common mistakes](#common-mistakes) + +</details> + +<!-- Document content (editable) --> + +This guide explains the split between the **base class** (in the core package) and the **concrete class** (in the SWC package). Understanding this split is key to putting code in the right place. + +## Why two classes + +2nd-gen components are built in two layers: a **base class** in core and a **concrete class** in SWC. The base class holds behavior — validation, state management, accessibility logic. The concrete class adds the visual parts: styles, rendering, and value overrides. + +This split means: + +- Behavior logic is reusable and testable independently of rendering +- Changing styles or templates does not risk breaking component logic +- Multiple concrete classes can extend the same base (e.g., future platform variants) + +## Core (base class) responsibilities + +The base class lives in `core/components/<name>/Component.base.ts`. It handles: + +| Responsibility | Example | +|----------------|---------| +| **Shared properties** | `indeterminate`, `label`, `progress`, `fixed` | +| **Overridable statics** | `VARIANTS`, `VALID_SIZES`, `STATIC_COLORS` | +| **Validation logic** | Checking `variant` against valid values in `update()` | +| **Accessibility setup** | Setting `role="separator"` in `firstUpdated()` | +| **ARIA management** | Adding/removing `aria-orientation` in `updated()` | +| **Mixin composition** | Extending `SizedMixin(SpectrumElement, ...)` | +| **Controllers** | Attaching `LanguageResolutionController` | + +The base class does **not**: + +- Import or define styles (no CSS) +- Call `render()` (no template) +- Register the custom element (no `defineElement`) +- Import Lit directives like `classMap` or `when` + +**Example — Badge.base.ts responsibilities:** + +```ts +export abstract class BadgeBase extends SizedMixin( + ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]')), + { validSizes: BADGE_VALID_SIZES, noDefaultSize: true } +) { + // API TO OVERRIDE: VARIANTS, VALID_SIZES, variant + // SHARED API: FIXED_VALUES, VARIANTS_SEMANTIC, fixed getter/setter + // IMPLEMENTATION: hasIcon getter, update() validation +} +``` + +## SWC (concrete class) responsibilities + +The concrete class lives in `swc/components/<name>/Component.ts`. It handles: + +| Responsibility | Example | +|----------------|---------| +| **Overriding statics** | Setting `VARIANTS_COLOR` to the S2 value set | +| **Overriding property types** | Narrowing `variant` to `BadgeVariant` | +| **Generation-specific properties** | `subtle`, `outline` (S2-only) | +| **Styles** | Returning `[styles]` from `get styles()` | +| **Rendering** | The `render()` method with the HTML template | +| **Lit directives** | `classMap`, `when`, `ifDefined` in templates | + +**Example — Badge.ts responsibilities:** + +```ts +export class Badge extends BadgeBase { + // API OVERRIDES: VARIANTS_COLOR, VARIANTS, VALID_SIZES, variant + // API ADDITIONS: subtle, outline + // RENDERING & STYLING: get styles(), render() +} +``` + +## Decision guide + +When you are not sure where to put code, use this table: + +| Question | Answer → Location | +|----------|-------------------| +| Does it use `html` or `css` from Lit? | **SWC** (concrete) | +| Does it validate property values? | **Core** (base) | +| Does it set ARIA attributes? | **Core** (base) | +| Is it a `render()` method? | **SWC** (concrete) | +| Is it a property shared across S1 and S2? | **Core** (base) | +| Is it a property only in S2? | **SWC** (concrete), in `API ADDITIONS` | +| Does it import a directive (`classMap`, `when`)? | **SWC** (concrete) | +| Does it attach a controller? | **Core** (base) | +| Does it use a mixin? | **Core** (base), in the `extends` clause | +| Is it a static array of valid values? | **Core** (base), in `API TO OVERRIDE` | + +**Rule of thumb:** If it has nothing to do with how the component looks, it belongs in core. If it touches styles, templates, or generation-specific values, it belongs in SWC. + +## Common mistakes + +**Putting styles in the base class:** + +```ts +// ❌ Bad — styles belong in the concrete class +export abstract class BadgeBase extends SpectrumElement { + public static override get styles() { + return [styles]; + } +} + +// ✅ Good — styles are in the concrete class +export class Badge extends BadgeBase { + public static override get styles() { + return [styles]; + } +} +``` + +**Putting validation in the concrete class:** + +```ts +// ❌ Bad — validation belongs in the base class +export class Badge extends BadgeBase { + protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (!this.constructor.VARIANTS.includes(this.variant)) { ... } + } +} + +// ✅ Good — validation is in the base class +export abstract class BadgeBase extends SizedMixin(...) { + protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + if (!this.constructor.VARIANTS.includes(this.variant)) { ... } + } + } +} +``` + +**Putting S2-only properties in the base class:** + +```ts +// ❌ Bad — subtle is S2-only, it should not be in the base +export abstract class BadgeBase extends SizedMixin(...) { + @property({ type: Boolean, reflect: true }) + public subtle: boolean = false; +} + +// ✅ Good — subtle is in the concrete class under API ADDITIONS +export class Badge extends BadgeBase { + // ─────────────────── + // API ADDITIONS + // ─────────────────── + + /** + * @todo This can be moved to the base class once we are no longer maintaining 1st-gen. + */ + @property({ type: Boolean, reflect: true }) + public subtle: boolean = false; +} +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/12_composition-patterns.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/12_composition-patterns.md new file mode 100644 index 00000000000..453e4175727 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/12_composition-patterns.md @@ -0,0 +1,139 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Composition patterns + +<!-- Document title (editable) --> + +# Composition patterns + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) +- [When to use each pattern](#when-to-use-each-pattern) + - [Mixin](#mixin) + - [Controller](#controller) + - [Directive](#directive) + - [Interface](#interface) +- [Decision guide](#decision-guide) +- [Detailed guides](#detailed-guides) + +</details> + +<!-- Document content (editable) --> + +This guide explains when to use each composition pattern in 2nd-gen. There are four ways to share behavior between components: **mixins**, **controllers**, **directives**, and **interfaces**. + +## Overview + +| Pattern | What it does | Adds to class hierarchy? | Example in 2nd-gen | +|---------|-------------|--------------------------|---------------------| +| **Mixin** | Adds properties, methods, and lifecycle to a class | Yes | `SizedMixin`, `ObserveSlotText`, `ObserveSlotPresence` | +| **Controller** | Attaches optional behavior to a host element | No | `LanguageResolutionController` | +| **Directive** | Encapsulates rendering logic used in templates | No | `classMap`, `when`, `ifDefined`, `styleMap` | +| **Interface** | Defines a structural contract (shape of an object) | No | `SizedElementInterface`, `SlotPresenceObservingInterface` | + +## When to use each pattern + +### Mixin + +Use a mixin when the shared behavior needs to **become part of the class**. Mixins add properties, methods, and lifecycle callbacks directly to the component. They appear in the `extends` clause of the class declaration. + +**Good for:** + +- Properties that many components share (e.g. `size`) +- Lifecycle behavior that runs automatically (e.g. observing slot text changes) +- Behavior that subclasses may need to override + +**Examples in 2nd-gen:** + +- `SizedMixin` — adds a `size` property with validation and default values +- `ObserveSlotText` — observes slotted text content and sets `slotHasContent` +- `ObserveSlotPresence` — observes whether slotted elements are present + +### Controller + +Use a controller when the behavior is **optional and self-contained**. Controllers are attached to a host element but do not modify the class hierarchy. They have their own lifecycle that runs alongside the component. + +**Good for:** + +- Behavior that only some components need +- External service integration (e.g. language/locale resolution) +- Behavior that should not affect the class's type signature + +**Examples in 2nd-gen:** + +- `LanguageResolutionController` — resolves the component's language from `<html lang>`, browser settings, or a provider + +### Directive + +Use a directive when the shared logic is **template rendering logic**. Directives transform values in `html` templates. Lit provides many built-in directives; custom directives are possible but not currently used in 2nd-gen. + +**Good for:** + +- Conditional rendering (`when`) +- Dynamic class names (`classMap`) +- Dynamic styles (`styleMap`) +- Handling undefined attribute values (`ifDefined`) + +**Examples in 2nd-gen (all built-in Lit directives):** + +- `classMap` — builds a class string from an object +- `when` — conditionally renders content +- `ifDefined` — only sets an attribute if the value is defined +- `styleMap` — builds an inline style string from an object + +### Interface + +Use an interface when you need to define the **shape** of an object without adding behavior. Interfaces describe what properties and methods an object has, but they do not provide implementations. + +**Good for:** + +- Describing the public API added by a mixin +- Defining callback signatures and config objects +- Augmenting global types (e.g. `HTMLElementTagNameMap`) + +**Examples in 2nd-gen:** + +- `SizedElementInterface` — describes the public API of `SizedMixin` +- `SlotTextObservingInterface` — describes the public API of `ObserveSlotText` +- `SlotPresenceObservingInterface` — describes the public API of `ObserveSlotPresence` +- `HTMLElementTagNameMap` augmentation — declares custom element tag types + +## Decision guide + +**Mixin depth limit:** + +Components should have a maximum mixin depth of 2. If more behavior is needed, use controllers instead of additional mixins. See [Mixin composition](13_mixin-composition.md#mixin-depth-limit) for the rationale. + +Use this flowchart to choose the right pattern: + +```text +Does the behavior add properties or lifecycle to the component? +├── Yes → Does every component using it need these properties? +│ ├── Yes → MIXIN +│ └── No → CONTROLLER +└── No → Is the behavior about rendering in a template? + ├── Yes → DIRECTIVE + └── No → Is it about defining a structural contract? + ├── Yes → INTERFACE + └── No → Probably a utility function (no pattern needed) +``` + +| Question | Answer | +|----------|--------| +| Many components need a `size` property | **Mixin** (`SizedMixin`) | +| One component needs locale-aware formatting | **Controller** (`LanguageResolutionController`) | +| A template needs conditional class names | **Directive** (`classMap`) | +| A mixin needs to describe its public API | **Interface** (`SizedElementInterface`) | + +## Detailed guides + +Each composition pattern has its own detailed guide: + +- **[Mixin composition](13_mixin-composition.md)** — How to compose mixins, ordering, options, and patterns +- **[Controller composition](14_controller-composition.md)** — How to create and attach controllers +- **[Directive composition](15_directive-composition.md)** — How to use built-in directives and author custom ones +- **[Interface composition](16_interface-composition.md)** — When to use interfaces and how to define them diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/13_mixin-composition.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/13_mixin-composition.md new file mode 100644 index 00000000000..256f3c51485 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/13_mixin-composition.md @@ -0,0 +1,299 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Mixin composition + +<!-- Document title (editable) --> + +# Mixin composition + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Mixin pattern](#mixin-pattern) +- [Mixin depth limit](#mixin-depth-limit) +- [Composition order](#composition-order) +- [Options objects](#options-objects) + - [SizedMixin options](#sizedmixin-options) + - [ObserveSlotText options](#observeslottext-options) + - [ObserveSlotPresence options](#observeslotpresence-options) +- [Available mixins](#available-mixins) + - [SizedMixin](#sizedmixin) + - [ObserveSlotText](#observeslottext) + - [ObserveSlotPresence](#observeslotpresence) +- [Writing a new mixin](#writing-a-new-mixin) + +</details> + +<!-- Document content (editable) --> + +This guide explains how mixins work in 2nd-gen and how to compose them correctly. + +## Mixin pattern + +A mixin is a function that takes a class and returns a new class with added behavior. In 2nd-gen, mixins follow this pattern: + +```ts +function MyMixin<T extends Constructor<ReactiveElement>>( + constructor: T, + options?: { ... } +): T & Constructor<MyMixinInterface> { + class MixedElement extends constructor { + // Added properties and methods + } + return MixedElement; +} +``` + +The mixin: + +1. Takes a constructor (the class to extend) +2. Optionally takes an options object +3. Returns a new class that extends the constructor +4. Adds properties, methods, or lifecycle callbacks + +## Mixin depth limit + +**Target: maximum 2 mixins** (plus `SpectrumElement`) + +Complex mixin chains (3+ mixins deep) are harder to debug and understand. If a component needs more than 2 mixins worth of behavior, consider using a controller for some of the cross-cutting concerns. + +**Acceptable (depth ≤ 2):** + +```ts +// Depth 2: SizedMixin → ObserveSlotText → SpectrumElement +export abstract class StatusLightBase extends SizedMixin( + ObserveSlotText(SpectrumElement), + { noDefaultSize: true } +) { +``` + +**Consider refactoring (depth > 2):** + +If adding a 3rd mixin, refactor to use a controller instead: + +```ts +// Depth 3: SizedMixin → ObserveSlotText → ObserveSlotPresence → SpectrumElement +// @todo review — exceeds target depth of 2 +export abstract class BadgeBase extends SizedMixin( + ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]'), ''), + { noDefaultSize: true } +) { +``` + +> BadgeBase currently uses 3 mixins (SizedMixin → ObserveSlotText → ObserveSlotPresence → SpectrumElement). This exceeds the target but works because the mixins are orthogonal. There is a `@todo` in the codebase to review this composition. + +**Refactoring example:** + +If you need focus management, validation, and locale-aware formatting: + +```ts +// ❌ Too deep — 3 mixins +FocusableMixin(ValidatableMixin(LocaleMixin(SpectrumElement))) + +// ✅ Better — 2 mixins + 1 controller +export abstract class MyComponentBase extends FocusableMixin( + ValidatableMixin(SpectrumElement) +) { + private localeController = new LanguageResolutionController(this); +} +``` + +## Composition order + +When a base class uses multiple mixins, they are **nested** — the outermost mixin wraps the innermost. The innermost mixin is closest to `SpectrumElement`. + +```ts +// Innermost → outermost +export abstract class BadgeBase extends SizedMixin( + ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]')), + { validSizes: BADGE_VALID_SIZES, noDefaultSize: true } +) { +``` + +Reading inside out: + +1. `SpectrumElement` — the base element +2. `ObserveSlotPresence(SpectrumElement, '[slot="icon"]')` — adds slot presence detection +3. `ObserveSlotText(...)` — adds slot text observation +4. `SizedMixin(...)` — adds the `size` property with options + +The order matters when mixins depend on each other. For example, `ObserveSlotText` depends on the DOM being available, so it wraps after `ObserveSlotPresence`. + +```ts +// ✅ Good — innermost → outermost +SizedMixin( + ObserveSlotText(ObserveSlotPresence(SpectrumElement, '[slot="icon"]')), + { validSizes: BADGE_VALID_SIZES } +) + +// ❌ Bad — reversed order +ObserveSlotPresence( + SizedMixin(ObserveSlotText(SpectrumElement), {}), + '[slot="icon"]' +) +``` + +Not every component uses all three mixins. Use only the ones you need: + +```ts +// Status Light — uses SizedMixin only +export abstract class StatusLightBase extends SizedMixin(SpectrumElement, { + noDefaultSize: true, +}) { + +// Divider — uses SizedMixin only +export abstract class DividerBase extends SizedMixin(SpectrumElement, { + validSizes: DIVIDER_VALID_SIZES, + noDefaultSize: true, +}) { + +// Asset — no mixins at all +export abstract class AssetBase extends SpectrumElement { +``` + +## Options objects + +Each mixin can accept an options object as the second argument. Options go directly in the `extends` clause. + +### SizedMixin options + +| Option | Type | Default | Purpose | +|--------|------|---------|---------| +| `validSizes` | `readonly ElementSize[]` | `['s', 'm', 'l', 'xl']` | Which sizes the component accepts | +| `noDefaultSize` | `boolean` | `false` | If `true`, the component has no default size | +| `defaultSize` | `ElementSize` | `'m'` | The default size when no size is set | + +**Example — Badge with custom valid sizes and no default:** + +```ts +SizedMixin(SpectrumElement, { + validSizes: BADGE_VALID_SIZES, + noDefaultSize: true, +}) +``` + +**Example — Progress Circle with custom valid sizes:** + +```ts +SizedMixin(SpectrumElement, { + validSizes: PROGRESS_CIRCLE_VALID_SIZES, +}) +``` + +### ObserveSlotText options + +`ObserveSlotText` takes the slot name and excluded selectors as positional arguments (not an options object): + +| Argument | Type | Default | Purpose | +|----------|------|---------|---------| +| `slotName` | `string \| undefined` | `undefined` (default slot) | Which slot to observe | +| `excludedSelectors` | `string[]` | `[]` | Elements to exclude from text detection | + +**Example — Badge observing the default slot:** + +```ts +ObserveSlotText(SpectrumElement) +``` + +### ObserveSlotPresence options + +`ObserveSlotPresence` takes the light DOM selector as a positional argument: + +| Argument | Type | Purpose | +|----------|------|---------| +| `lightDomSelector` | `string \| string[]` | Selector(s) for direct children to observe | + +**Example — Badge observing the icon slot:** + +```ts +ObserveSlotPresence(SpectrumElement, '[slot="icon"]') +``` + +## Available mixins + +### SizedMixin + +Adds a reactive `size` property with validation. When an invalid size is set, it falls back to the default. The size is reflected to the `size` attribute. + +**File:** `core/mixins/sized-mixin.ts` + +**Adds to the class:** + +- `size` property (public getter/setter) +- `VALID_SIZES` static readonly array +- `update()` lifecycle override (sets default size attribute) + +**Interface:** `SizedElementInterface` (`{ size: ElementSize }`) + +### ObserveSlotText + +Observes text content in a slot. Uses a `MutationController` to watch for character data changes. Sets `slotHasContent` to `true` when the slot has non-empty text. + +**File:** `core/mixins/observe-slot-text.ts` + +**Adds to the class:** + +- `slotHasContent` property (boolean, not reflected) +- `manageTextObservedSlot()` method +- `update()` lifecycle override (checks child nodes before first render) +- `firstUpdated()` lifecycle override (manages slot content after first render) +- A `MutationController` observing `characterData` changes + +**Interface:** `SlotTextObservingInterface` (`{ slotHasContent: boolean; manageTextObservedSlot(): void }`) + +### ObserveSlotPresence + +Observes whether specific elements are present in the light DOM. Uses a `MutationController` to watch for child list changes. Useful for detecting whether optional slots (like an icon slot) have content. + +**File:** `core/mixins/observe-slot-presence.ts` + +**Adds to the class:** + +- `slotContentIsPresent` getter (boolean, throws if multiple selectors) +- `getSlotContentPresence(selector)` method (for multiple selectors) +- `managePresenceObservedSlot()` method +- A `MutationController` observing `childList` changes + +**Interface:** `SlotPresenceObservingInterface` (`{ slotContentIsPresent: boolean; getSlotContentPresence(selector: string): boolean; managePresenceObservedSlot(): void }`) + +## Writing a new mixin + +When creating a new mixin, follow this pattern: + +1. **Define an interface** for the public API the mixin adds +2. **Define a `Constructor` type** (or import the shared one) +3. **Write the mixin function** that takes a constructor and options, returns the extended class +4. **Export the mixin function and interface** from the barrel `index.ts` + +```ts +import { ReactiveElement } from 'lit'; + +type Constructor<T = Record<string, unknown>> = { + new (...args: any[]): T; + prototype: T; +}; + +export interface MyBehaviorInterface { + myProperty: string; +} + +export function MyBehaviorMixin<T extends Constructor<ReactiveElement>>( + constructor: T, + options?: { defaultValue?: string } +): T & Constructor<MyBehaviorInterface> { + class MyBehaviorElement extends constructor { + public myProperty: string = options?.defaultValue ?? ''; + } + return MyBehaviorElement; +} +``` + +Key rules: + +- The mixin function takes `Constructor<ReactiveElement>` as the first argument +- The options object is the second argument (optional) +- The return type includes `Constructor<MyBehaviorInterface>` so consumers get type safety +- Define an interface that describes the public API +- Place the mixin in `core/mixins/` and export from `core/mixins/index.ts` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/14_controller-composition.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/14_controller-composition.md new file mode 100644 index 00000000000..8eb267dc00b --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/14_controller-composition.md @@ -0,0 +1,191 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Controller composition + +<!-- Document title (editable) --> + +# Controller composition + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [What is a controller](#what-is-a-controller) +- [How controllers work](#how-controllers-work) +- [Available controllers](#available-controllers) +- [Planned controllers](#planned-controllers) +- [LanguageResolutionController](#languageresolutioncontroller) +- [Using a controller in a component](#using-a-controller-in-a-component) +- [Controller vs mixin](#controller-vs-mixin) +- [Writing a new controller](#writing-a-new-controller) + +</details> + +<!-- Document content (editable) --> + +This guide explains how Lit reactive controllers work in 2nd-gen components. + +For the official Lit documentation, see [Lit — Controllers](https://lit.dev/docs/composition/controllers/). + +## What is a controller + +A controller is a class that attaches to a host component and participates in its lifecycle. Controllers are useful for behavior that is **optional** and **self-contained** — they do not modify the class hierarchy, and they can be added or removed without changing the component's type. + +## How controllers work + +A controller implements the `ReactiveController` interface from Lit: + +```ts +interface ReactiveController { + hostConnected?(): void; + hostDisconnected?(): void; + hostUpdate?(): void; + hostUpdated?(): void; +} +``` + +The host component calls these methods at the right time: + +| Method | When it runs | +|--------|-------------| +| `hostConnected()` | When the host element is added to the DOM | +| `hostDisconnected()` | When the host element is removed from the DOM | +| `hostUpdate()` | Before each render | +| `hostUpdated()` | After each render | + +To attach a controller, call `host.addController(this)` in the constructor. This tells the host to call the controller's lifecycle methods. + +## Available controllers + +| Controller | Location | Purpose | +|-----------|----------|---------| +| `LanguageResolutionController` | `core/controllers/language-resolution.ts` | Resolve locale for formatting | + +## Planned controllers + +The following controllers exist in 1st-gen and may be recreated in 2nd-gen core (using 1st-gen as reference): + +| Controller | 1st-gen location | Purpose | +|-----------|-----------------|---------| +| `RovingTabindexController` | `1st-gen/packages/shared/` | Keyboard navigation | +| `PlacementController` | `1st-gen/packages/overlay/` | Overlay positioning | +| `MatchMediaController` | `1st-gen/packages/picker/` | Device-adaptive behavior | +| `PendingStateController` | `1st-gen/packages/button/` | Loading states | +| `InteractionController` (base) | `1st-gen/packages/overlay/` | Base for trigger behavior | +| `ClickController` | `1st-gen/packages/overlay/` | Click-to-open overlay | +| `HoverController` | `1st-gen/packages/overlay/` | Hover-to-open overlay | +| `LongpressController` | `1st-gen/packages/overlay/` | Longpress-to-open overlay | +| `ColorController` | `1st-gen/tools/reactive-controllers/` | Color validation/conversion | +| `GridController` | `1st-gen/tools/grid/` | Grid layout with virtual scrolling | + +## LanguageResolutionController + +The main controller currently in 2nd-gen is `LanguageResolutionController`. It resolves the component's language/locale for formatting numbers, dates, and accessibility text. + +**File:** `core/controllers/language-resolution.ts` + +**What it does:** + +1. Gets the initial language from `<html lang>`, `navigator.language`, or falls back to `'en-US'` +2. Validates the language using `Intl.DateTimeFormat.supportedLocalesOf()` +3. Subscribes to a shared `MutationObserver` on `<html lang>` to detect runtime language changes +4. Optionally subscribes to a language provider (e.g. `<sp-theme>`) via the `sp-language-context` event +5. When the language changes, calls `host.requestUpdate()` to trigger a re-render + +**Public API:** + +- `language` — the resolved language string (e.g. `'en-US'`, `'fr-FR'`) +- `languageResolverUpdatedSymbol` — a symbol used to detect language changes in `updated()` + +## Using a controller in a component + +Attach the controller as a private field in the base class: + +```ts +import { + LanguageResolutionController, + languageResolverUpdatedSymbol, +} from '@spectrum-web-components/core/controllers/language-resolution.js'; + +export abstract class ProgressCircleBase extends SizedMixin(SpectrumElement) { + // SHARED API section + private languageResolver = new LanguageResolutionController(this); + + // IMPLEMENTATION section + private formatProgress(): string { + return new Intl.NumberFormat(this.languageResolver.language, { + style: 'percent', + unitDisplay: 'long', + }).format(this.progress / 100); + } + + protected override updated(changes: PropertyValues): void { + super.updated(changes); + if (changes.has(languageResolverUpdatedSymbol)) { + this.setAttribute('aria-valuetext', this.formatProgress()); + } + } +} +``` + +Key points: + +- The controller is created in the property initializer — `new LanguageResolutionController(this)` calls `addController` internally +- The controller is `private` because consumers should not access it +- Use `languageResolverUpdatedSymbol` in `updated()` to detect language changes +- The controller's `language` property is accessed via `this.languageResolver.language` + +## Controller vs mixin + +| Feature | Mixin | Controller | +|---------|-------|------------| +| Adds to class hierarchy | Yes | No | +| Adds properties to the component | Yes | No (has its own properties) | +| Has its own lifecycle | No (uses the component's) | Yes (`hostConnected`, etc.) | +| Multiple instances per component | No | Yes | +| Changes the component's type | Yes | No | + +**Use a mixin when:** + +- The behavior adds properties that are part of the component's public API (e.g. `size`) +- Subclasses need to override the behavior + +**Use a controller when:** + +- The behavior is self-contained and does not add public API +- The component may or may not need the behavior +- You need multiple independent instances (e.g. two different observers) + +## Writing a new controller + +When creating a new controller, follow this pattern: + +```ts +import type { ReactiveController, ReactiveElement } from 'lit'; + +export class MyController implements ReactiveController { + private host: ReactiveElement; + + constructor(host: ReactiveElement) { + this.host = host; + this.host.addController(this); + } + + public hostConnected(): void { + // Set up listeners, observers, etc. + } + + public hostDisconnected(): void { + // Clean up listeners, observers, etc. + } +} +``` + +Key rules: + +- Implement the `ReactiveController` interface +- Store the host as a private field +- Call `host.addController(this)` in the constructor +- Always clean up in `hostDisconnected()` +- Place the controller in `core/controllers/` and export from `core/controllers/index.ts` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/15_directive-composition.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/15_directive-composition.md new file mode 100644 index 00000000000..92437241f84 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/15_directive-composition.md @@ -0,0 +1,258 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Directive composition + +<!-- Document title (editable) --> + +# Directive composition + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [What is a directive](#what-is-a-directive) +- [Built-in directives used in 2nd-gen](#built-in-directives-used-in-2nd-gen) + - [classMap](#classmap) + - [when](#when) + - [choose](#choose) + - [ifDefined](#ifdefined) + - [styleMap](#stylemap) +- [Custom directives](#custom-directives) + +</details> + +<!-- Document content (editable) --> + +This guide explains how Lit directives are used in 2nd-gen component templates. + +For the official Lit documentation, see [Lit — Built-in directives](https://lit.dev/docs/templates/directives/). + +## What is a directive + +A directive is a function that controls how values are rendered in a Lit `html` template. Lit provides many built-in directives for common tasks like conditional rendering, dynamic class names, and style mapping. + +Directives are imported from `lit/directives/*.js` and used directly in template expressions. + +## Built-in directives used in 2nd-gen + +| Directive | Import | Used in | Purpose | +|-----------|--------|---------|---------| +| `classMap` | `lit/directives/class-map.js` | All concrete classes | Dynamic CSS class names | +| `when` | `lit/directives/when.js` | Badge | Conditional rendering in place of ternary with `nothing` | +| `choose` | `lit/directives/choose.js` | Asset | Switch-case style rendering based on a value | +| `ifDefined` | `lit/directives/if-defined.js` | Stories, templates | Skip attribute if undefined | +| `styleMap` | `lit/directives/style-map.js` | Storybook decorators | Dynamic inline styles | + +### classMap + +The most commonly used directive. It builds a class string from an object where keys are class names and values are booleans. + +**Import:** + +```ts +import { classMap } from 'lit/directives/class-map.js'; +``` + +**Example from Badge.ts:** + +```ts +protected override render(): TemplateResult { + return html` + <div + class=${classMap({ + ['swc-Badge']: true, + [`swc-Badge--size${this.size?.toUpperCase()}`]: this.size != null, + [`swc-Badge--${this.variant}`]: this.variant != null, + ['swc-Badge--subtle']: this.subtle, + ['swc-Badge--outline']: this.outline, + })} + > + <!-- ...content... --> + </div> + `; +} +``` + +**Example from Divider.ts:** + +```ts +protected override render(): TemplateResult { + return html` + <div + class=${classMap({ + ['swc-Divider']: true, + [`swc-Divider--size${this.size?.toUpperCase()}`]: this.size != null, + [`swc-Divider--static${capitalize(this.staticColor)}`]: + this.staticColor != null, + [`swc-Divider--vertical`]: this.vertical, + })} + ></div> + `; +} +``` + +```ts +// ✅ Good — clear boolean conditions +class=${classMap({ + ['swc-Badge']: true, + ['swc-Badge--subtle']: this.subtle, +})} + +// ❌ Bad — string concatenation instead of classMap +class=${'swc-Badge' + (this.subtle ? ' swc-Badge--subtle' : '')} +``` + +### when + +Conditionally renders content. Takes a condition, a true template, and an optional false template. + +**Import:** + +```ts +import { when } from 'lit/directives/when.js'; +``` + +**Example from Badge.ts:** + +```ts +${when( + this.hasIcon, + () => html`<slot name="icon"></slot>` +)} +``` + +**Always prefer `when` over ternary operators** for conditional rendering: + +```ts +// ✅ Good — when directive +${when(this.hasIcon, () => html`<slot name="icon"></slot>`)} + +// ❌ Bad — ternary with empty string +${this.hasIcon ? html`<slot name="icon"></slot>` : ''} + +// ❌ Bad — ternary with nothing +${this.hasIcon ? html`<slot name="icon"></slot>` : nothing} +``` + +Use `when` for cleaner conditional rendering. It is especially useful when the false case is empty (no else branch). + +For multiple discrete values, use [`choose`](#choose) instead of multiple `when` directives. + +### choose + +Renders content based on matching a value against a set of cases, similar to a switch statement. Takes a value, an array of case-template pairs, and an optional default template. + +**Import:** + +```ts +import { choose } from 'lit/directives/choose.js'; +``` + +**Example from Asset.ts:** + +```ts +protected override render(): TemplateResult { + return html` + <div class=${classMap({ ['spectrum-Asset']: true })}> + ${choose(this.variant, [ + ['file', () => file(this.label)], + ['folder', () => folder(this.label)], + ], () => html`<slot></slot>`)} + </div> + `; +} +``` + +**Always prefer `choose` over nested ternaries** when selecting between multiple discrete values: + +```ts +// ✅ Good — choose directive +${choose(this.variant, [ + ['file', () => file(this.label)], + ['folder', () => folder(this.label)], +], () => html`<slot></slot>`)} + +// ❌ Bad — nested ternary +${this.variant === 'file' + ? file(this.label) + : this.variant === 'folder' + ? folder(this.label) + : html`<slot></slot>`} +``` + +**When to use `choose` vs `when`:** + +- Use `choose` when selecting between multiple discrete values (like a switch statement) +- Use `when` for simple boolean conditions or presence checks + +```ts +// ✅ Good — choose for variant selection +${choose(this.variant, [ + ['primary', () => html`<span class="primary">Primary</span>`], + ['secondary', () => html`<span class="secondary">Secondary</span>`], + ['tertiary', () => html`<span class="tertiary">Tertiary</span>`], +])} + +// ✅ Good — when for boolean condition +${when(this.hasIcon, () => html`<slot name="icon"></slot>`)} +``` + +### ifDefined + +Sets an attribute only if the value is defined. If the value is `undefined`, the attribute is removed entirely. + +**Import:** + +```ts +import { ifDefined } from 'lit/directives/if-defined.js'; +``` + +**Example from stories:** + +```ts +<swc-status-light variant=${ifDefined(args.variant)}> + ${args.label} +</swc-status-light> +``` + +```ts +// ✅ Good — attribute removed when undefined +variant=${ifDefined(this.variant)} + +// ❌ Bad — attribute set to "undefined" string +variant=${this.variant} +``` + +### styleMap + +Builds an inline style string from an object. Used in Storybook decorators for dynamic layout. + +**Import:** + +```ts +import { styleMap } from 'lit/directives/style-map.js'; +``` + +**Example from Storybook decorators:** + +```ts +style=${styleMap({ + display: 'flex', + gap: '16px', + 'flex-wrap': 'wrap', +})} +``` + +## Custom directives + +2nd-gen does not currently use custom directives. All directive usage relies on Lit's built-in directives. + +If a custom directive is needed in the future, it should follow Lit's custom directive pattern: + +1. Extend the `Directive` class from `lit/directive.js` +2. Implement the `render()` method +3. Optionally implement `update()` for fine-grained control +4. Export a factory function created with `directive(MyDirective)` + +See [Lit — Custom directives](https://lit.dev/docs/templates/custom-directives/) for the full pattern. diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/16_interface-composition.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/16_interface-composition.md new file mode 100644 index 00000000000..0c6a5197baf --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/16_interface-composition.md @@ -0,0 +1,176 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Interface composition + +<!-- Document title (editable) --> + +# Interface composition + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [When to use interface vs type](#when-to-use-interface-vs-type) +- [Mixin interfaces](#mixin-interfaces) +- [Global type augmentation](#global-type-augmentation) +- [The Constructor type pattern](#the-constructor-type-pattern) +- [Naming rules](#naming-rules) + +</details> + +<!-- Document content (editable) --> + +This guide explains how TypeScript interfaces are used in 2nd-gen components. + +## When to use interface vs type + +In 2nd-gen, `interface` and `type` serve different purposes: + +| Use `interface` when | Use `type` when | +|---------------------|-----------------| +| Describing the shape of a class or object | Deriving a union from `as const` arrays | +| Declaring a mixin's public API | Defining a helper type (e.g. `Constructor<T>`) | +| Augmenting global types (`HTMLElementTagNameMap`) | Creating component variant types | + +**Rule of thumb:** Use `interface` for structural contracts (what methods and properties exist). Use `type` for unions and derived types (what values are valid). + +```ts +// ✅ Good — interface for a structural contract +export interface SizedElementInterface { + size: ElementSize; +} + +// ✅ Good — type for a derived union +export type BadgeVariant = (typeof BADGE_VARIANTS)[number]; + +// ❌ Bad — using type for a structural contract +export type SizedElementInterface = { + size: ElementSize; +}; + +// ❌ Bad — using interface for a union (not possible anyway) +// Interfaces cannot represent unions +``` + +## Mixin interfaces + +Every mixin should have a matching interface that describes the public API it adds. This interface is used in the mixin's return type to provide type safety for consumers. + +**Example — SizedMixin interface (sized-mixin.ts):** + +```ts +export interface SizedElementInterface { + size: ElementSize; +} + +export interface SizedElementConstructor { + readonly VALID_SIZES: readonly ElementSize[]; +} +``` + +`SizedElementInterface` describes instance members (`size`). `SizedElementConstructor` describes static members (`VALID_SIZES`). Both are used in the return type of `SizedMixin`: + +```ts +export function SizedMixin<T extends Constructor<ReactiveElement>>( + constructor: T, + options?: { ... } +): T & Constructor<SizedElementInterface> & SizedElementConstructor { +``` + +**Example — ObserveSlotText interface (observe-slot-text.ts):** + +```ts +export interface SlotTextObservingInterface { + slotHasContent: boolean; + manageTextObservedSlot(): void; +} +``` + +**Example — ObserveSlotPresence interface (observe-slot-presence.ts):** + +```ts +export interface SlotPresenceObservingInterface { + slotContentIsPresent: boolean; + getSlotContentPresence(selector: string): boolean; + managePresenceObservedSlot(): void; +} +``` + +Key rules: + +- Name the interface with the mixin's purpose plus `Interface` (e.g. `SizedElementInterface`) +- Include all public properties and methods the mixin adds +- Export the interface from the same file as the mixin +- Re-export from the barrel `index.ts` + +## Global type augmentation + +The SWC `index.ts` files augment the global `HTMLElementTagNameMap` interface. This tells TypeScript what type `document.querySelector('swc-badge')` returns. + +```ts +declare global { + interface HTMLElementTagNameMap { + 'swc-badge': Badge; + } +} +``` + +This is the only place where `interface` is used with `declare global`. It is a TypeScript declaration merging feature — multiple files can add entries to `HTMLElementTagNameMap`, and TypeScript merges them all. + +```ts +// ✅ Good — in the SWC index.ts file +declare global { + interface HTMLElementTagNameMap { + 'swc-badge': Badge; + } +} +defineElement('swc-badge', Badge); + +// ❌ Bad — in the wrong file +// This belongs in the SWC index.ts, not in the base class or types file +``` + +## The Constructor type pattern + +Mixins use a `Constructor` type to describe the base class they accept. This is defined locally in each mixin file: + +```ts +type Constructor<T = Record<string, unknown>> = { + new (...args: any[]): T; + prototype: T; +}; +``` + +This type says: "any class constructor that creates instances of type `T`." It allows the mixin to accept any `ReactiveElement` subclass: + +```ts +function SizedMixin<T extends Constructor<ReactiveElement>>( + constructor: T, + options?: { ... } +): T & Constructor<SizedElementInterface> { +``` + +The `Constructor` type is currently defined separately in each mixin file. If a shared version is needed in the future, it could be extracted to a utility module. + +## Naming rules + +| Item | Convention | Example | +|------|-----------|---------| +| Mixin instance interface | `{Purpose}Interface` | `SizedElementInterface` | +| Mixin constructor interface | `{Purpose}Constructor` | `SizedElementConstructor` | +| Element base interface | `{Element}Interface` | `SpectrumInterface` | +| No `I` prefix | — | `SizedElementInterface`, not `ISizedElement` | +| No `T` prefix for types | — | `Constructor<T>`, not `TConstructor<T>` | + +```ts +// ✅ Good +export interface SizedElementInterface { ... } +export interface SizedElementConstructor { ... } + +// ❌ Bad — I prefix +export interface ISizedElement { ... } + +// ❌ Bad — missing Interface suffix +export interface SizedElement { ... } +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/17_debug-validation.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/17_debug-validation.md new file mode 100644 index 00000000000..c5ee6fed9d6 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/17_debug-validation.md @@ -0,0 +1,241 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / [2nd-gen TypeScript](README.md) / Debug and validation + +<!-- Document title (editable) --> + +# Debug and validation + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Debug mode API](#debug-mode-api) +- [Validation by lifecycle hook](#validation-by-lifecycle-hook) + - [update() — Pre-render validation](#update--pre-render-validation) + - [firstUpdated() — One-time setup validation](#firstupdated--one-time-setup-validation) + - [updated() — Post-render validation](#updated--post-render-validation) + - [connectedCallback() — Environment validation](#connectedcallback--environment-validation) +- [Warning message format](#warning-message-format) + +</details> + +<!-- Document content (editable) --> + +This guide covers debug-mode validation patterns for 2nd-gen components. Debug validation helps developers catch configuration errors during development without impacting production performance. + +## Debug mode API + +The `window.__swc` object provides debug utilities: + +```ts +interface SWCDebug { + DEBUG: boolean; + warn(element: HTMLElement, message: string, url?: string, options?: { issues?: string[] }): void; +} +``` + +**Initialization:** The `window.__swc` object is automatically created when the first Spectrum Web Component loads, but only in development builds (`process.env.NODE_ENV === 'development'`). The initialization lives in `@spectrum-web-components/core/element/spectrum-element.ts`. In production builds, `window.__swc` is not created, so all debug checks short-circuit via the optional chaining pattern (`window.__swc?.DEBUG`). + +Debug mode is enabled by default in development builds. To disable it, set `window.__swc.DEBUG = false` before components load. In production builds, debug checks are either stripped or short-circuit when `DEBUG` is false. + +**Basic usage:** + +```ts +if (window.__swc?.DEBUG) { + // Debug-only validation code +} +``` + +## Validation by lifecycle hook + +Different validation concerns belong in different lifecycle methods. Choose based on when the validation is relevant and what information is available. + +### update() — Pre-render validation + +**What to validate:** + +- Property values against allowed values (variant, size, etc.) +- Property combinations that are invalid together +- Required properties that affect rendering + +**Why update():** + +- Runs before render, so warnings appear before DOM changes +- Can short-circuit or adjust state before template evaluation +- Consistent with Lit's unidirectional data flow + +**Example from Badge.base.ts:** + +```ts +protected override update(changedProperties: PropertyValues): void { + super.update(changedProperties); + if (window.__swc?.DEBUG) { + const constructor = this.constructor as typeof BadgeBase; + // Validate variant value + if (!constructor.VARIANTS.includes(this.variant)) { + window.__swc.warn( + this, + `Invalid variant "${this.variant}". Valid variants: ${constructor.VARIANTS.join(', ')}.`, + 'https://opensource.adobe.com/spectrum-web-components/components/badge/', + { issues: [`variant="${this.variant}"`] } + ); + } + // Validate property combinations + if (this.outline && !constructor.VARIANTS_SEMANTIC.includes(this.variant)) { + window.__swc.warn( + this, + `Outline styling requires a semantic variant.`, + 'https://opensource.adobe.com/spectrum-web-components/components/badge/', + { issues: [`outline + variant="${this.variant}"`] } + ); + } + } +} +``` + +### firstUpdated() — One-time setup validation + +**What to validate:** + +- Required attributes that must be present at initialization +- Attributes that should not change (roles, static configuration) +- Dependencies on external elements (labelled-by targets) + +**Why firstUpdated():** + +- Runs only once after first render +- DOM is available for attribute checks +- Good for "did you forget to configure X?" warnings + +**Example:** + +```ts +protected override firstUpdated(changed: PropertyValues): void { + super.firstUpdated(changed); + if (window.__swc?.DEBUG) { + // Warn if no accessible label is provided + if (!this.label && !this.hasAttribute('aria-label') && !this.hasAttribute('aria-labelledby')) { + window.__swc.warn( + this, + `Missing accessible label. Provide a "label" attribute or "aria-label".`, + 'https://opensource.adobe.com/spectrum-web-components/components/progress-circle/', + { issues: ['accessibility'] } + ); + } + } +} +``` + +### updated() — Post-render validation + +**What to validate:** + +- ARIA state consistency after property changes +- DOM structure requirements (slotted content validation) +- Computed style or layout issues + +**Why updated():** + +- Runs after render, so DOM reflects current state +- Can check rendered output and slot assignments +- Good for "the current state is problematic" warnings + +**Example:** + +```ts +protected override updated(changed: PropertyValues<this>): void { + super.updated(changed); + if (window.__swc?.DEBUG) { + // Warn if indeterminate but has a value + if (changed.has('indeterminate') && this.indeterminate && this.value !== undefined) { + window.__swc.warn( + this, + `Indeterminate progress should not have a value. The value will be ignored.`, + 'https://opensource.adobe.com/spectrum-web-components/components/progress-circle/', + { issues: ['indeterminate + value'] } + ); + } + } +} +``` + +### connectedCallback() — Environment validation + +**What to validate:** + +- Required ancestor elements (form, menu, etc.) +- Context providers availability +- Environment capabilities (CSS features, browser support) + +**Why connectedCallback():** + +- Runs when element is added to DOM tree +- Can traverse ancestors and check context +- Good for "you put this in the wrong place" warnings + +**Example:** + +```ts +public override connectedCallback(): void { + super.connectedCallback(); + if (window.__swc?.DEBUG) { + // Warn if not inside a form + if (!this.closest('form')) { + window.__swc.warn( + this, + `This component should be used inside a <form> element.`, + 'https://opensource.adobe.com/spectrum-web-components/components/field/', + { issues: ['missing form ancestor'] } + ); + } + } +} +``` + +## Warning message format + +Warnings should be clear, actionable, and include helpful context. Follow this format: + +**Include:** + +1. What is invalid +2. What values are valid (if applicable) +3. A link to documentation +4. An issues array for diagnostic tools + +**Example:** + +```ts +window.__swc.warn( + this, + `Invalid variant "${this.variant}". Valid variants: ${constructor.VARIANTS.join(', ')}.`, + 'https://opensource.adobe.com/spectrum-web-components/components/badge/', + { issues: [`variant="${this.variant}"`] } +); +``` + +**Writing good warning messages:** + +```ts +// ✅ Good — specific, actionable +`Invalid variant "${this.variant}". Valid variants: positive, negative, informative, notice, neutral.` + +// ❌ Bad — vague +`Invalid variant.` + +// ✅ Good — explains the constraint +`Outline styling requires a semantic variant. Current variant "${this.variant}" is not semantic.` + +// ❌ Bad — doesn't explain why +`Cannot use outline with this variant.` +``` + +**URL format:** + +Use the full documentation URL for the component: + +```ts +'https://opensource.adobe.com/spectrum-web-components/components/badge/' +``` diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/README.md b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/README.md new file mode 100644 index 00000000000..f63be4d9ca7 --- /dev/null +++ b/CONTRIBUTOR-DOCS/02_style-guide/02_typescript/README.md @@ -0,0 +1,78 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../README.md) / [Style guide](../README.md) / 2nd-gen TypeScript + +<!-- Document title (editable) --> + +# 2nd-gen TypeScript + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Guides](#guides) +- [External references](#external-references) + +</details> + +<details open> +<summary><strong>Beneath this doc</strong></summary> + +- [File organization](01_file-organization.md) +- [Class structure](02_class-structure.md) +- [TypeScript modifier keywords](03_typescript-modifiers.md) +- [Lit decorators and modifiers](04_lit-decorators.md) +- [Property patterns](05_property-patterns.md) +- [Method patterns](06_method-patterns.md) +- [JSDoc standards](07_jsdoc-standards.md) +- [Component types](08_component-types.md) +- [Rendering patterns](09_rendering-patterns.md) +- [Naming conventions](10_naming-conventions.md) +- [Base class vs concrete class](11_base-vs-concrete.md) +- [Composition patterns](12_composition-patterns.md) +- [Mixin composition](13_mixin-composition.md) +- [Controller composition](14_controller-composition.md) +- [Directive composition](15_directive-composition.md) +- [Interface composition](16_interface-composition.md) +- [Debug and validation](17_debug-validation.md) + +</details> + +<!-- Document content (editable) --> + +This section covers the TypeScript coding conventions for **2nd-gen** component development. These guides explain how to organize files, structure classes, use decorators, write JSDoc, define types, and compose behavior using mixins, controllers, directives, and interfaces. + +The guides are written for both human contributors and AI agents. They use simple language, clear examples, and consistent formatting so anyone can follow them. + +> **Reference implementation:** The [Badge](../../../2nd-gen/packages/core/components/badge/Badge.base.ts) component is the primary example throughout these guides. Other 2nd-gen components (Status Light, Progress Circle, Divider, Asset) are used where they show different patterns. + +## Guides + +- **[File organization](01_file-organization.md)** — Copyright headers, import grouping and order, export patterns, and where types files live. +- **[Class structure](02_class-structure.md)** — Base vs concrete class layout, section comments, and how to order properties and methods within sections. +- **[TypeScript modifier keywords](03_typescript-modifiers.md)** — When and how to use `static`, `override`, `public`, `protected`, and `private`. +- **[Lit decorators and modifiers](04_lit-decorators.md)** — `@property`, `@state`, `@query`, `@queryAssignedNodes`, `@eventOptions`, and other Lit decorators. +- **[Property patterns](05_property-patterns.md)** — Property ordering, reactive property decorators, and when to use custom getters/setters vs Lit defaults. +- **[Method patterns](06_method-patterns.md)** — Method ordering, lifecycle method names, event handler naming, ARIA role assignment, and the `override` keyword. +- **[JSDoc standards](07_jsdoc-standards.md)** — When JSDoc is required, what to include, and how to use tags like `@internal`, `@attribute`, `@slot`, `@element`, and `@example`. +- **[Component types](08_component-types.md)** — Patterns for `*.types.ts` files: constant arrays, type derivation, S1/S2 split, naming, and removal strategy. +- **[Rendering patterns](09_rendering-patterns.md)** — Helper functions, inline SVG, size transformations, and classMap patterns. +- **[Naming conventions](10_naming-conventions.md)** — Rules for class names, property names, method names, type names, constant names, CSS class names, and file names. +- **[Base class vs concrete class](11_base-vs-concrete.md)** — What belongs in core (base) vs SWC (concrete) and how to decide. +- **[Composition patterns](12_composition-patterns.md)** — When to use a mixin, controller, directive, or interface, and how to choose. +- **[Mixin composition](13_mixin-composition.md)** — How to compose mixins: order, options, depth limits, and patterns. +- **[Controller composition](14_controller-composition.md)** — How to create and attach Lit controllers to host components. +- **[Directive composition](15_directive-composition.md)** — How to use built-in Lit directives and author custom ones. +- **[Interface composition](16_interface-composition.md)** — When to use `interface` vs `type`, and how to define and consume interfaces. +- **[Debug and validation](17_debug-validation.md)** — Debug-mode validation, warning patterns, and the `window.__swc` API. + +## External references + +- [TypeScript documentation](https://www.typescriptlang.org/docs/) +- [Lit documentation](https://lit.dev/docs/) +- [Lit — Reactive properties](https://lit.dev/docs/components/properties/) +- [Lit — Decorators](https://lit.dev/docs/components/decorators/) +- [Lit — Controllers](https://lit.dev/docs/composition/controllers/) +- [Lit — Directives](https://lit.dev/docs/templates/directives/) +- [JSDoc reference](https://jsdoc.app/) diff --git a/CONTRIBUTOR-DOCS/02_style-guide/02_linting-tools.md b/CONTRIBUTOR-DOCS/02_style-guide/03_linting-tools.md similarity index 100% rename from CONTRIBUTOR-DOCS/02_style-guide/02_linting-tools.md rename to CONTRIBUTOR-DOCS/02_style-guide/03_linting-tools.md diff --git a/CONTRIBUTOR-DOCS/02_style-guide/04_testing/10_resources.md b/CONTRIBUTOR-DOCS/02_style-guide/04_testing/10_resources.md index 981f450d429..1c52144f00b 100644 --- a/CONTRIBUTOR-DOCS/02_style-guide/04_testing/10_resources.md +++ b/CONTRIBUTOR-DOCS/02_style-guide/04_testing/10_resources.md @@ -18,5 +18,5 @@ - [UI testing best practices](https://dev.to/bryce/ui-testing-best-practices-4ke4) - [Red Hat Design System testing conventions](https://github.com/RedHat-UX/red-hat-design-system/wiki/Testing) - [WCAG 2.1 quick reference](https://www.w3.org/WAI/WCAG21/quickref/) -- [Accessibility testing guide](../01_contributor-guides/09_accessibility-testing.md) (project-specific) -- [2nd gen testing guide](../01_contributor-guides/11_2ndgen_testing.md) (project-specific) +- [Accessibility testing guide](../../01_contributor-guides/09_accessibility-testing.md) (project-specific) +- [2nd gen testing guide](../../01_contributor-guides/11_2ndgen_testing.md) (project-specific) diff --git a/CONTRIBUTOR-DOCS/02_style-guide/README.md b/CONTRIBUTOR-DOCS/02_style-guide/README.md index 832dd561ed2..0f6548ef408 100644 --- a/CONTRIBUTOR-DOCS/02_style-guide/README.md +++ b/CONTRIBUTOR-DOCS/02_style-guide/README.md @@ -18,7 +18,25 @@ - [Spectrum CSS to SWC Migration](01_css/04_spectrum-swc-migration.md) - [Styling Anti-Patterns (What to Avoid)](01_css/05_anti-patterns.md) - [Property order quick reference](01_css/06_property-order-quick-reference.md) -- [Linting tools](02_linting-tools.md) +- [2nd-gen TypeScript](02_typescript/README.md) + - [File organization](02_typescript/01_file-organization.md) + - [Class structure](02_typescript/02_class-structure.md) + - [TypeScript modifier keywords](02_typescript/03_typescript-modifiers.md) + - [Lit decorators and modifiers](02_typescript/04_lit-decorators.md) + - [Property patterns](02_typescript/05_property-patterns.md) + - [Method patterns](02_typescript/06_method-patterns.md) + - [JSDoc standards](02_typescript/07_jsdoc-standards.md) + - [Component types](02_typescript/08_component-types.md) + - [Rendering patterns](02_typescript/09_rendering-patterns.md) + - [Naming conventions](02_typescript/10_naming-conventions.md) + - [Base class vs concrete class](02_typescript/11_base-vs-concrete.md) + - [Composition patterns](02_typescript/12_composition-patterns.md) + - [Mixin composition](02_typescript/13_mixin-composition.md) + - [Controller composition](02_typescript/14_controller-composition.md) + - [Directive composition](02_typescript/15_directive-composition.md) + - [Interface composition](02_typescript/16_interface-composition.md) + - [Debug and validation](02_typescript/17_debug-validation.md) +- [Linting tools](03_linting-tools.md) - [Testing guide](04_testing/README.md) - [Testing overview](04_testing/01_testing-overview.md) - [Storybook testing](04_testing/02_storybook-testing.md) @@ -38,4 +56,5 @@ This section covers the coding conventions and authoring patterns used across Spectrum Web Components. Following these guides keeps the codebase consistent, reviewable, and accessible. - **[2nd-gen CSS](01_css/README.md)** — Property ordering, class naming, custom properties, selector patterns, and forced-colors requirements for component stylesheets. -- **[Linting tools](02_linting-tools.md)** — How automated linting enforces these conventions and how to configure or extend the rules. +- **[2nd-gen TypeScript](02_typescript/README.md)** — File organization, class structure, decorators, JSDoc, type definitions, naming, and composition patterns for component TypeScript. +- **[Linting tools](03_linting-tools.md)** — How automated linting enforces these conventions and how to configure or extend the rules. diff --git a/CONTRIBUTOR-DOCS/03_project-planning/01_objectives-and-strategy.md b/CONTRIBUTOR-DOCS/03_project-planning/01_objectives-and-strategy.md index e0b23e0a05f..8ff7c9dcb4e 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/01_objectives-and-strategy.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/01_objectives-and-strategy.md @@ -19,7 +19,7 @@ - [Continually improve components](#continually-improve-components) - [Strategy](#strategy) - [Disruptive vs. non-disruptive change](#disruptive-vs-non-disruptive-change) - - [Side-by-side development of 1st-gen and 2nd-gen](#side-by-side-development-of-1st-gen-and-2nd-gen) + - [Independent development of 1st-gen and 2nd-gen](#independent-development-of-1st-gen-and-2nd-gen) </details> @@ -77,7 +77,7 @@ At a high level, our strategy for efficiently pursuing our objectives in paralle - Channel disruptive changes into 2nd-gen, where we can take the time to get them right and the care to minimize the disruption they actually cause. -- Work on 1st-gen and 2nd-gen side-by-side, so that non-disruptive changes can easily be shared between generations and delivered continually throughout the transition. +- Work on 1st-gen and 2nd-gen side-by-side in the same repository, keeping both visible while maintaining their independence. ### Disruptive vs. non-disruptive change @@ -91,24 +91,20 @@ Our first three objectives have aspects that are inherently disruptive, or have Meanwhile, most of the **accessibility improvements** and general **component improvements** we want to make aren't inherently disruptive—they can delivered in a continual stream of targeted, mostly non-breaking releases. -### Side-by-side development of 1st-gen and 2nd-gen +### Independent development of 1st-gen and 2nd-gen -We have decided to work on 1st-gen and 2nd-gen side-by-side—in the same repository, but in separate workspaces. This gives us two important advantages: **isolation** and **colocation**. +We work on 1st-gen and 2nd-gen in the same repository but in **separate, independent workspaces**. There is **no runtime dependency** between them — 2nd-gen code does not affect 1st-gen, and vice versa. **Isolation** of 1st-gen and 2nd-gen in separate workspaces lets us build 2nd-gen iteratively from the ground up, leaving behind as much structural and technical debt as possible, without needing to worry about breaking 1st-gen. Disruptive changes are confined to the `2nd-gen` workspace, while the 1st-gen project continues working essentially "as-is." -**Colocation** of 1st-gen and 2nd-gen in a single branch of the same repository makes it easy to share core component functionality between generations. Here's how this works: +**Colocation** of 1st-gen and 2nd-gen in the same repository keeps both visible to the team and makes it easy to reference existing implementations when building 2nd-gen components. However, **code is not shared between generations at runtime**. -- We locate core component implementations in the 2nd-gen Core library as **abstract, non-rendering classes**. +Here's how this works: - These classes define **shared API** and implement **generation-agnostic behavior and logic**. +- 2nd-gen Core contains **abstract, non-rendering base classes** that define API and implement behavior. -- In both 1st-gen and 2nd-gen SWC, we implement components as **concrete, rendering classes** that extend from the abstract classes in Core. +- 2nd-gen SWC contains **concrete, rendering classes** that extend from Core and add styles, templates, and element registration. - These classes implement **generation-specific rendering and styling**, and **override API and behavior** as needed. +- 1st-gen is **self-contained** — it has its own implementations and does not import from 2nd-gen packages. -This architecture delivers two key benefits: - -1. **Improvements we make in shared code immediately benefit 1st-gen SWC customers,** letting us deliver value on a continual basis throughout the transition. - -2. **Sharing code will help make customers' eventual migration from 1st-gen to 2nd-gen as smooth as possible.** By design, it will be difficult to introduce unnecessary or unintentional API or functional differences between 1st- and 2nd-gen components. +When migrating a component, we start from the existing 1st-gen implementation as a reference and apply improvements incrementally. This keeps changes scoped and avoids blocking migrations. More dramatic rewrites should be informed by existing bugs, accessibility considerations, or feature disparity — not done speculatively. diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/01_status.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/01_status.md index 882ce3e348d..93fd5b18b4f 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/01_status.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/01_status.md @@ -28,7 +28,7 @@ | Alert Banner | ✓ | ✓ | | | | | | | Alert Dialog | | | | | | | | | Asset | ✓ | ✓ | | | | | | -| Avatar | ✓ | | | | | | | +| Avatar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Badge | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Breadcrumbs | | | | | | | | | Button | ✓ | | | | | | | diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_washing-machine-workflow.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_washing-machine-workflow.md new file mode 100644 index 00000000000..df0b86a8e45 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_washing-machine-workflow.md @@ -0,0 +1,592 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../../README.md) / [Project planning](../../../README.md) / [Workstreams](../../README.md) / [2nd-gen Component Migration](../README.md) / Step By Step / Washing machine: migrating an existing 1st-gen component to 2nd-gen + +<!-- Document title (editable) --> + +# Washing machine: migrating an existing 1st-gen component to 2nd-gen + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + + - [Workspace setup](#workspace-setup) +- [Quick Migration Checklist](#quick-migration-checklist) +- [Relationship to this workstream](#relationship-to-this-workstream) +- [Workflow overview](#workflow-overview) +- [Starting from 1st-gen (reference, not dependency)](#starting-from-1st-gen-reference-not-dependency) +- [Core vs SWC: where does code go?](#core-vs-swc-where-does-code-go) +- [Phase 1: Preparation](#phase-1-preparation) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 2: Setup](#phase-2-setup) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 3: API migration](#phase-3-api-migration) + - [What to do](#what-to-do) + - [Property migration scenarios](#property-migration-scenarios) + - [API patterns (statics and warnings)](#api-patterns-statics-and-warnings) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 4: Styling](#phase-4-styling) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 5: Accessibility](#phase-5-accessibility) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 6: Testing](#phase-6-testing) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 7: Documentation](#phase-7-documentation) + - [What to do](#what-to-do) + - [What to check](#what-to-check) + - [Common problems and solutions](#common-problems-and-solutions) + - [Quality gate](#quality-gate) +- [Phase 8: Review](#phase-8-review) + - [What to do](#what-to-do) + - [Final checklist (copy and use)](#final-checklist-copy-and-use) + - [Quality gate](#quality-gate) +- [Decision trees](#decision-trees) + - [Should this component be split into multiple components?](#should-this-component-be-split-into-multiple-components) + - [Should this component be combined with another?](#should-this-component-be-combined-with-another) + - [What shared utilities can be extracted?](#what-shared-utilities-can-be-extracted) + - [How should variants be implemented?](#how-should-variants-be-implemented) + - [What accessibility pattern applies?](#what-accessibility-pattern-applies) +- [Reference: Badge migration](#reference-badge-migration) +- [Style guides and resources](#style-guides-and-resources) + +</details> + +<!-- Document content (editable) --> + +**Scope:** This guide applies **only** when a **1st-gen Spectrum Web Component already exists** (or 1st-gen is explicitly the package you are migrating—you refactor that surface, move shared logic to core, then add 2nd-gen). **Greenfield / net-new** 2nd-gen (no 1st-gen counterpart) is **out of scope** here; see [TODO: Greenfield 2nd-gen contributor guide](../03_migration-project-planning.md#todo-greenfield-2nd-gen-contributor-guide) in [Migration project planning](../03_migration-project-planning.md). + +It **orchestrates** the migration: eight phases with checklists and quality gates, plus links to the step-by-step docs and style guides for implementation detail. It does not duplicate those guides—it sequences **what** to do and **when**. + +### Workspace setup + +Keep **spectrum-web-components** (this repo) and **[spectrum-css](https://github.com/adobe/spectrum-css)** in the **same workspace**—typically as **sibling folders** under one parent directory (e.g. `~/dev/spectrum-web-components` and `~/dev/spectrum-css`). Step 1 analysis, Phase 4 styling (S2 source from the spectrum-css **`spectrum-two`** branch), and AI-assisted migration prompts all work best when both trees are available locally for comparison, copy-from-source, and editor/IDE context. + +--- + +## Quick Migration Checklist + +**Before starting a migration:** + +- [ ] **spectrum-css** is in the same workspace as this repo (sibling checkout; use **`spectrum-two`** for S2 CSS) → [Workspace setup](#workspace-setup) +- [ ] Component analysis exists → [Phase 1: Preparation](#phase-1-preparation) +- [ ] Breaking changes documented → [Phase 1: Preparation](#phase-1-preparation) +- [ ] Core folder created → [Phase 2: Setup](#phase-2-setup) +- [ ] SWC folder created → [Phase 2: Setup](#phase-2-setup) + +**Migration steps:** + +- [ ] Move base class to core → [Phase 2: Setup](#phase-2-setup) +- [ ] Create SWC component → [Phase 2: Setup](#phase-2-setup) +- [ ] Migrate public API → [Phase 3: API migration](#phase-3-api-migration) +- [ ] Migrate CSS (and run stylelint—property order, no-descending-specificity, tokens) → [Phase 4: Styling](#phase-4-styling) +- [ ] Implement accessibility → [Phase 5: Accessibility](#phase-5-accessibility) +- [ ] Add tests (test stories + a11y spec) → [Phase 6: Testing](#phase-6-testing) +- [ ] Add stories → [Phase 7: Documentation](#phase-7-documentation) +- [ ] Open PR → [Phase 8: Review](#phase-8-review) + +--- + +## Relationship to this workstream + +Use this doc for **what order** to do things and **what to check**; use the linked docs for **how to do** each phase. + +- **Workstream:** [2nd-gen Component Migration](../README.md) — README, status table, and **7 step-by-step docs** that describe the migration path (study 1st-gen, create base in core, build 2nd-gen). +- **Status table:** [01_status.md](../01_status.md) — use it to see which components have completed which steps and to **update progress** when you finish a migration. +- **Jira / Epics:** [Migration project planning — Epics and tickets](../03_migration-project-planning.md) — epic templates, phase-aligned tickets, tracking. + +**How the 8 phases map to the 7 step-by-step docs:** + +| Washing machine phase | Step-by-step doc(s) | +|----------------------|---------------------------| +| **1. Preparation** | Uses output of **Step 1: Analyze rendering and styling** (read the component analysis). Plan breaking changes and scope. | +| **2. Setup** | **Steps 2–3** — study 1st-gen structure, create base class in core — then create 2nd-gen core/SWC layout per Phase 2. | +| **3. API migration** | **Step 4: Formalize Spectrum data model** + **Step 5: Add 2nd-gen SWC** (API overrides/additions). | +| **4. Styling** | **Step 6: Migrate rendering & styles from Spectrum CSS**. | +| **5. Accessibility** | (No dedicated step — this guide adds it.) | +| **6. Testing** | (Mentioned in steps as "confirm tests pass" — this guide makes it a full phase.) | +| **7. Documentation** | **Step 7: Add stories for 2nd-gen component** + JSDoc and usage docs. | +| **8. Review** | (No dedicated step — this guide adds checklist and PR.) | + +Reference to guide to [understand the 1st-gen component structure](../02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md) and the linked step-by-step docs for Steps 2–3. If those steps are **already** done, start **Phase 2** at SWC package setup and the Phase 2 “What to do” list. + +--- + +## Workflow overview + +```mermaid +flowchart LR + subgraph Input + A[Existing 1st-gen component] + end + subgraph Phases + B[1. Preparation] + C[2. Setup] + D[3. API] + E[4. Styling] + F[5. A11y] + G[6. Testing] + H[7. Docs] + I[8. Review] + end + subgraph Output + J[2nd-gen component] + end + A --> B --> C --> D --> E --> F --> G --> H --> I --> J +``` + +--- + +## Starting from 1st-gen (reference, not dependency) + +This workflow assumes a **1st-gen package** (`1st-gen/packages/<component>/` or equivalent) exists and serves as the **reference implementation**. You use it to understand the component's API, behavior, and edge cases — but neither generation imports from or depends on the other at runtime. + +The approach: + +1. **Study the 1st-gen implementation** — understand the public API, mixins, controllers, and rendering. +2. **Create the 2nd-gen base class in core** — start from the 1st-gen logic, applying improvements incrementally. Do not speculatively rewrite — changes should be informed by existing bugs, accessibility considerations, or feature disparity. +3. **Create the 2nd-gen concrete class in SWC** — add rendering, styles, and element registration. + +1st-gen remains self-contained. It is **not** updated to import from 2nd-gen core. + +--- + +## Core vs SWC: where does code go? + +Before you start, know the split: + +| Layer | Location | Contains | +|-------|----------|----------| +| **Core** | `2nd-gen/packages/core/components/<name>/` | Behavior, API, validation. Base class, types, mixins. **No** rendering. | +| **SWC** | `2nd-gen/packages/swc/components/<name>/` | Rendering, styling, element registration. Extends core base; adds `render()`, CSS, stories. | + +- **Base class (core):** Properties, getters/setters, lifecycle, validation. Use `@internal` for non-public API. +- **Concrete class (SWC):** `extends` the base; adds `styles`, `render()`, and any SWC-only props (e.g. S2-only options). +- **Types:** In core (e.g. `Badge.types.ts`) for use by the concrete class and consumers. + +<details> +<summary>File layout</summary> + +- Core: `Component.base.ts`, `Component.types.ts`, `index.ts` +- SWC: `Component.ts`, `component.css`, `index.ts`, `stories/`, `test/` +</details> + +--- + +## Phase 1: Preparation + +**Goal:** Understand the component and plan the migration—including **API and naming** choices that should be agreed before heavy refactors. + +### What to do + +1. **Read or generate the component analysis** — See [Step 1: Analyze rendering and styling](01_analyze-rendering-and-styling/README.md). Analysis docs live under [03_components/](../../../03_components/) (e.g. `badge/rendering-and-styling-migration-analysis.md`). Have **spectrum-css** in the [same workspace](#workspace-setup) so comparisons to Spectrum 2 source are practical. **Optional (AI-assisted):** If you use Cursor, the **component-migration-analysis** skill (when available in your setup) can be used together with Step 1’s [Cursor prompt](01_analyze-rendering-and-styling/README.md#using-the-cursor-prompt) to produce or update the analysis; still follow Step 1 QA before treating the doc as final. +2. **Read the 1st-gen code** and dependencies (mixins, shared modules). +3. **List breaking changes** and existing bug tickets; consider severity and whether fixes require breaking changes. +4. **Write a short migration plan** — scope, risks, order of work. +5. **Capture “API washing” / naming in the plan** — Note alignment with **Figma** option names, **React Spectrum** where relevant, possible **splits** (e.g. menu vs listbox), and **overlay / event** conventions (`sp-opened`, `sp-closed`, which components may emit them); **get team review on the plan before large refactors** so downstream phases stay aligned. + +### What to check + +- [ ] I know the full public API (attributes, properties, slots, events). +- [ ] I know all the bugs that exist for this component in JIRA and am familiar with their severity and potential for breaking changes. +- [ ] I know which parts are S1-only vs S2-only (if both exist). +- [ ] I have a list of files to create in core and SWC. + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| No component analysis doc | Use Badge as reference; run the Analyze step Cursor prompt to generate one, or compare 1st-gen vs 2nd-gen structure. | +| Existing 1st-gen bugs | Consider severity, whether fixes require breaking changes, etc., before deciding how to proceed. | +| Many variants or modes | Plan decision tree: one component vs several (see Decision trees below). | + +<details> +<summary>**Stop and ask:** Should this be one component or several?</summary> + +Use the decision tree under **Decision trees** below. If the answer is "split," agree with the team on the new component names and APIs before Phase 2. +</details> + +### Quality gate + +- [ ] Migration plan is written and covers: API surface, breaking changes, file layout (core vs SWC), and (where applicable) naming/split/overlay-event decisions—with **team review** before major refactors. + +--- + +## Phase 2: Setup + +**Goal:** Create the 2nd-gen file and folder structure (or finish the refactor path: base in core, 2nd-gen SWC created). + +### What to do + +1. **Core:** Create `2nd-gen/packages/core/components/<name>/` with `Component.base.ts`, `Component.types.ts`, `index.ts`. +2. **SWC:** Create `2nd-gen/packages/swc/components/<name>/` with `Component.ts`, `component.css`, `index.ts`, `stories/`, `test/`. +3. **Wire up exports** in `index`/`package.json` so the component is importable. + +See [Step 2](02_factor-rendering-out-of-1st-gen-component.md) and [Step 3](03_move-base-class-to-2nd-gen-core.md) for directory layout, code structure, and reference implementations (Badge). + +### What to check + +- [ ] Core base class extends the right mixins (e.g. `SizedMixin`, `SpectrumElement`). +- [ ] SWC class extends the core base (e.g. `extends BadgeBase`). +- [ ] Imports resolve; build passes with minimal or stub implementation. + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| Wrong base or mixin | See Badge and [Step 2](02_factor-rendering-out-of-1st-gen-component.md). | +| CSS not applied | Add `static override get styles()` and import the CSS module. See Badge. | +| Package not exporting | Add to package exports (e.g. `@adobe/spectrum-wc/badge`). | + +### Quality gate + +- [ ] All files exist; `nx build` (or equivalent) for the affected packages succeeds; component is importable in Storybook. + +--- + +## Phase 3: API migration + +**Goal:** Define properties, methods, and types in 2nd-gen (using 1st-gen as reference); keep a clear public API. + +### What to do + +1. **List the public API** from 1st-gen (attributes, properties, slots, events). +2. **Define types** in `Component.types.ts`; put shared API in base (core), SWC-only in concrete class. +3. **Mark internal API** with JSDoc `@internal`; add JSDoc for public props/slots. +4. **Implement static readonly arrays and debug warnings** — follow [API patterns (statics and warnings)](#api-patterns-statics-and-warnings) below; reference implementation: 2nd-gen Badge (`Badge.base.ts`, `Badge.ts`). + +### Property migration scenarios + +| Scenario | Where it goes | Action | +|----------|---------------|--------| +| **Same in S1 and S2** | Base (core) | Carry over from 1st-gen reference. | +| **Renamed in S2** | Base (core) with new name | Use the new name directly. No need to maintain the old name. | +| **Removed in S2** | Do not migrate | Document removal in component README. | +| **New in S2** | Base or SWC | Put in base if it's behavior; SWC if it's rendering-only. | + +See [Step 4](04_formalize-spectrum-data-model.md) and [Step 5](05_implement-2nd-gen-component.md) for types, base vs SWC API, and native input handling (Checkbox). + +### API patterns (statics and warnings) + +Follow team **TypeScript conventions (Ticket 7)** for naming and structure; use **Badge** as the concrete reference. + +**Static `readonly` arrays (`VARIANTS`, `VARIANTS_COLOR`, `VALID_SIZES`, `FIXED_VALUES`, etc.)** + +- Declare canonical option lists in `Component.types.ts` as const arrays; the **base** exposes `static readonly` fields that concrete classes can override with their own valid values. This keeps the base abstract — validation uses `(this.constructor as typeof Base).VARIANTS` at runtime, so it automatically applies the correct set for whichever concrete class is running (including potential future rendering layers). +- Use them for: **runtime validation** (e.g. in `update()` or setters—check value is in the list), **Storybook** `argTypes` `options`, and **tests** (assert against the same source of truth). +- See `2nd-gen/packages/core/components/badge/Badge.base.ts` and `2nd-gen/packages/swc/components/badge/Badge.ts`. + +**`window.__swc.warn()` (debug-only)** + +- When `window.__swc?.DEBUG` is enabled, warn on invalid API combinations (e.g. incompatible variant + outline) so developers catch mistakes without affecting production. See `Badge.base.ts` (`update()` and `window.__swc.warn(...)` with structured issue metadata). + +**Deprecating 1st-gen type and const exports** + +While 1st-gen does not import from 2nd-gen core, we still want to guide 1st-gen consumers toward patterns that will ease their eventual migration to 2nd-gen: + +- Prefer **statics on the custom element class** over package-level exports for variant lists and related constants (`Component.VARIANTS`, etc.). +- For **types**, deprecate standalone type exports from 1st-gen packages and document migration to inference from the element (e.g. `typeof Badge.prototype.variant`, `typeof Badge.FIXED_VALUES`) — see `@deprecated` JSDoc on exports in `1st-gen/packages/badge/src/Badge.ts`. +- Use `window.__swc.warn()` in 1st-gen to surface deprecation notices at dev time when deprecated APIs are used. + +### What to check + +- [ ] All relevant 1st-gen props have a 2nd-gen home (base or SWC). +- [ ] Types are in core and used by SWC. +- [ ] Internal helpers are marked `@internal`. +- [ ] Static `readonly` arrays match types; used for validation, Storybook, and tests where applicable. +- [ ] Invalid prop combinations emit `window.__swc.warn()` when debug is on (where the component has combination rules). + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| Different options from 1st-gen | Define const arrays in types; base uses canonical set; SWC overrides if needed. See Badge. | +| Complex getter/setter | Use only for attribute sync or validation; otherwise `@property`. | +| Native `<input>` (Checkbox) | See `Checkbox.base.ts` and `Checkbox.ts` for abstract `inputElement`, `handleChange`, `delegatesFocus`. | + +<details> +<summary>**Stop and ask:** Breaking API changes</summary> + +If you are renaming or removing a public prop or attribute, confirm with the team and plan deprecation or a migration path for consumers. +</details> + +### Quality gate + +- [ ] Public API is documented; types are in core; base holds behavior; SWC holds rendering. +- [ ] Static readonly pattern, debug warnings, and 1st-gen deprecation notices align with Badge (or equivalent) and TypeScript conventions (Ticket 7). + +--- + +## Phase 4: Styling + +**Goal:** Migrate CSS to 2nd-gen structure and follow the CSS style guide. Follow the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md); see also [Step 6: Migrate rendering & styles from Spectrum CSS](06_migrate-rendering-and-styles.md) for workstream context. Requires a local **spectrum-css** checkout next to this repo—see [Workspace setup](#workspace-setup). + +### What to do + +1. **Follow the migration steps** — [Step 6](06_migrate-rendering-and-styles.md) and the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md). Use [03_components/](../../../03_components/) for spectrum-two alignment. Copy S2 styles from your **spectrum-css** clone, **`spectrum-two`** branch, component `index.css` (not `dist`). +2. **Use tokens** — Replace hard-coded values with `token(...)`. Follow [component CSS](../../../../02_style-guide/01_css/01_component-css.md) and [custom properties](../../../../02_style-guide/01_css/02_custom-properties.md). +3. **Run stylelint** — After updating CSS, run `nx run swc:lint`. Fix all errors. The 2nd-gen config enforces: **property order** (see `linters/stylelint-property-order.js`); **no descending specificity** (e.g. `:host([disabled])` before `:host([checked][disabled])`); **declaration empty line** (empty line between groups); **token usage** (`token("...")` for color, font-size, etc.). + +For templates, `render()`, icons (inline SVG), and detailed examples, see [Step 6](06_migrate-rendering-and-styles.md) and the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md). + +### What to check + +- [ ] No inline styles for theme/size; use CSS and classes. +- [ ] Tokens and custom properties align with Spectrum 2. +- [ ] Follows the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md). +- [ ] Adheres to the [component styling guidelines](../../../../02_style-guide/01_css/01_component-css.md). +- [ ] **2nd-gen CSS passes stylelint:** No `order/properties-order`, `no-descending-specificity`, `declaration-empty-line-before`, or token-usage errors in the component’s `.css` file (run `nx run swc:lint` or the repo’s lint command). + +### Common problems and solutions + +For troubleshooting and detailed patterns (e.g. 1st-gen Constructable Stylesheets vs plain `.css`, variant classes, size/density), see the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md) and [component styling guidelines](../../../../02_style-guide/01_css/01_component-css.md). + +| Problem | Solution | +|--------|----------| +| `order/properties-order` errors | Reorder declarations to match `linters/stylelint-property-order.js` (e.g. display → position → flex → box sizing → margin → font → overflow → pointer-events → content → opacity → transition). | +| `no-descending-specificity` errors | Place lower-specificity selectors before higher-specificity ones (e.g. `:host([disabled])` before `:host([checked][disabled])`; single-attribute or single-pseudo before compound selectors). Split rule blocks if needed so order is consistent. | +| Token / `declaration-strict-value` | Replace hard-coded colors, font-size, etc. with `token("...")`. | + +### Quality gate + +- [ ] Follows the [full migration steps](../../../../02_style-guide/01_css/04_spectrum-swc-migration.md). +- [ ] Adheres to the [component styling guidelines](../../../../02_style-guide/01_css/01_component-css.md). +- [ ] Stylelint passes for the component’s CSS (no 2nd-gen CSS lint errors). + +--- + +## Phase 5: Accessibility + +**Goal:** Implement WCAG-aligned behavior and document it. Follow the repo’s [Accessibility testing](https://github.com/adobe/spectrum-web-components/blob/main/CONTRIBUTOR-DOCS/01_contributor-guides/09_accessibility-testing.md) guide and the PR template’s accessibility checklist; for public-facing usage, refer to the [public docs site](https://opensource.adobe.com/spectrum-web-components/) accessibility guidance where applicable. + +### What to do + +1. **Follow the [Accessibility testing](https://github.com/adobe/spectrum-web-components/blob/main/CONTRIBUTOR-DOCS/01_contributor-guides/09_accessibility-testing.md) guide** and the PR template checklist. +2. **Use 2nd-gen Storybook accessibility guides:** `2nd-gen/packages/swc/.storybook/guides/accessibility-guides/` — codebase-specific a11y patterns and docs surfaced in Storybook (complement the contributor guide and APG). +3. **Identify the APG pattern** for your component type (e.g. button, combobox) — [WCAG ARIA Authoring Practices Guide (APG)](https://www.w3.org/WAI/ARIA/apg/patterns/). +4. **Implement:** Semantics (prefer native HTML), ARIA where needed, keyboard support, focus management (trap in overlays), screen reader exposure. Test with assistive tech; document in JSDoc. +5. **Native vs custom controls:** Native form control (e.g. Checkbox) → `delegatesFocus: true`. Custom control (e.g. Radio) → `role` and `aria-*` on host, manage focus/keyboard. See Checkbox and Radio as references. + +### What to check + +- [ ] ARIA and semantics match the chosen APG pattern. +- [ ] Component behaves as expected with screen reader. +- [ ] Keyboard and focus behavior are implemented and tested. +- [ ] No accessibility regressions vs 1st-gen. + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| Unclear which pattern applies | Start from the component's primary role (e.g. "combobox" → Combobox pattern). Consider splitting into more than one component (e.g. "sp-menu" into menu and listbox components). | +| Focus trap in overlays | Use a shared focus-trap utility if the repo provides one; follow APG for modal/dialog. | +| Custom controls | Ensure they have roles, names, and keyboard support; avoid div/span without semantics. | + +<details> +<summary>**Stop and ask:** Custom events vs native events</summary> + +Prefer native events when they give the right semantics (e.g. `click`). Add custom events only when you need to expose extra data or lifecycle (e.g. `sp-close`). Document both in JSDoc. +</details> + +### Quality gate + +- [ ] APG pattern identified and linked +- [ ] Keyboard and ARIA implemented +- [ ] a11y tests added +- [ ] Screen reader testing performed + +--- + +## Phase 6: Testing + +**Goal:** Automated tests for behavior and accessibility. + +### What to do + +1. **Unit tests (Vitest):** Defaults, props, slots, key interactions. Use test helpers (e.g. `fixture`). +2. **A11y tests (Playwright):** Run a11y checks in Storybook; use `gotoStory` and `toMatchAriaSnapshot`. +3. **Storybook play functions:** Add play functions for defaults, variants, keyboard. +4. **Coverage:** Main props, variants, user actions. + +Follow the two-file layout (`test/<component>.test.ts`, `test/<component>.a11y.spec.ts`). See the [2nd gen testing conventions](../../../../01_contributor-guides/11_2ndgen_testing.md) and reference implementations in `link/test/`, `checkbox/test/`, `badge/test/`, etc. + +### What to check + +- [ ] `test/<component>.test.ts` and `test/<component>.a11y.spec.ts` are present and follow the structure described above (test stories under *Component/Tests*, a11y spec with `gotoStory` and `toMatchAriaSnapshot`). +- [ ] Unit tests pass; a11y tests pass. +- [ ] Critical paths (render, props, slots, events) are covered. +- [ ] Tests follow the project [testing conventions](../../../../01_contributor-guides/11_2ndgen_testing.md) (Ticket 10). + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| Async timing | Use `await nextFrame()` or `element.updateComplete` as needed. | +| Shadow DOM | Use `shadowRoot.querySelector` and the test utils the repo provides. | +| A11y rules too strict | Tune rules in the a11y config if needed; do not disable without team agreement. | + +### Quality gate + +- [ ] All new tests pass; no unnecessary skipped tests; testing style guide followed. + +--- + +## Phase 7: Documentation + +**Goal:** JSDoc, Storybook stories, and usage docs so others can use and migrate. Align with [Step 7: Add stories for 2nd-gen component](07_add-stories-for-2nd-gen-component.md). + +### What to do + +1. **JSDoc:** Every public prop, slot, event, and the element itself. Use `@element`, `@example`, `@internal` for non-public. +2. **Storybook stories:** Use `getStorybookHelpers`, METADATA (args, argTypes, meta), stories for variants/sizes. Reference `badge/stories/badge.stories.ts`, `divider/stories/divider.stories.ts`. +3. **Size/variant controls:** Ensure controls drive the component. If the attribute comes from a mixin (e.g. `SizedMixin`), declare it on the SWC class with `@property({ reflect: true })` so the CEM includes it; run `yarn analyze` to regenerate the manifest. +4. **Review, usage docs, migration notes:** Confirm stories; add usage docs; document API changes from 1st-gen. + +See [Step 7](07_add-stories-for-2nd-gen-component.md) for structure and examples. + + +### What to check + +- [ ] All public API has JSDoc; Storybook shows the main use cases. +- [ ] For components with size/variant: controls change the component in the canvas; if the attribute comes from a mixin, the SWC class declares it (and CEM was regenerated with `yarn analyze`) so the template applies it. +- [ ] Migration notes exist when the API is not a direct port. + +### Common problems and solutions + +| Problem | Solution | +|--------|----------| +| Too many story variants | Use `argTypes.options` from the component (e.g. `Badge.VARIANTS`); one story can cover many variants. | +| Missing examples | Add at least one `@example` in JSDoc and one default Storybook story. | +| Size or variant control doesn't change the component | The Storybook template only applies attributes that are in the Custom Elements Manifest. If the attribute comes from a mixin on the base (e.g. `SizedMixin`), the CEM may not list it for the SWC element. Declare the property on the SWC class with `@property({ reflect: true })` so the CEM includes it, then run `yarn analyze` to regenerate the manifest. See Radio (SWC) for an example. | + +### Quality gate + +- [ ] JSDoc complete for public API; Storybook stories and usage docs in place; migration notes added if needed. + +--- + +## Phase 8: Review + +**Goal:** Final checks and PR readiness. Update the workstream **status table** so the team can see progress. + +### What to do + +1. **Run the full checklist** (copy below). +2. **Lint:** From the repo root, run **`yarn lint:2nd-gen`** (or equivalent) and fix issues in touched files. That runs **ESLint** on TypeScript, JavaScript, and JSON under `2nd-gen`; **Stylelint** on `2nd-gen/**/*.css` (property order, no-descending-specificity, declaration empty lines, token usage, etc.); and **Prettier** in check mode. CSS should already be clean from Phase 4—re-check here (see [Phase 4: 2nd-gen CSS linting](#phase-4-styling)). +3. **Tests:** Run the full test suite for the affected packages. +4. **Build:** Ensure build succeeds. +5. **Storybook:** Load the component in Storybook; click through stories and variants. +6. **Update status:** In the [status table](../01_status.md), mark the component's row with checkmarks for the steps you completed (Analyze, Factor, Move to Core, Data Model, Add 2nd-Gen, Render & Style, Add Stories). +7. **Create the PR** with a clear description: component name, breaking changes, and link to this guide or the ticket. + +### Final checklist (copy and use) + +- [ ] Phase 1: Migration plan done; API and breaking changes understood. +- [ ] Phase 2: All files created; build passes; component importable. +- [ ] Phase 3: API in base/SWC; types in core; JSDoc and @internal set. +- [ ] Phase 4: CSS follows style guide; tokens and variants work; **stylelint passes** for 2nd-gen component CSS (property order, no-descending-specificity, tokens). +- [ ] Phase 5: WCAG pattern applied; keyboard and ARIA done; a11y tests pass. +- [ ] Phase 6: Unit and a11y tests pass; coverage is reasonable. +- [ ] Phase 7: JSDoc and stories complete; migration notes if needed. +- [ ] Phase 8: Lint clean; tests green; Storybook verified; status table updated; PR created. + +### Quality gate + +- [ ] Checklist complete; status table updated; PR open; at least one reviewer assigned. + +--- + +## Decision trees + +Use these when you are not sure how to structure the migration. + +### Should this component be split into multiple components? + +- Does it have **two or more distinct patterns** in one (e.g. "button" vs "link" that share markup but different behavior)? + → **Consider splitting** (e.g. base + Button + Link). +- Is it **one clear concept** with variants (e.g. Badge with sizes and colors)? + → **Keep as one component** with variant props. +- **Stop and ask** if the team has already decided (e.g. from component analysis). + +### Should this component be combined with another? + +- Are two 1st-gen components **always used together** or **almost the same API**? + → Consider one 2nd-gen component with a prop (e.g. "mode") or a single unified API. +- Are they **separate in Spectrum design** and used in different contexts? + → Keep separate. + +### What shared utilities can be extracted? + +- Is the same logic used in **multiple 2nd-gen components** (e.g. focus trap, keyboard nav)? + → Put it in core or a shared module. +- Is it **only for this component**? + → Keep it in the component (base or SWC as appropriate). + +### How should variants be implemented? + +- **Small, fixed set** (e.g. size: S/M/L): Use a **string attribute** and reflect it; use a const array for type and Storybook options. +- Match the **primary role** of the component (button, listbox, combobox, dialog, etc.) to native HTML or an existing accessible [pattern](https://www.w3.org/WAI/ARIA/apg/patterns/). +- **Boolean toggles** (e.g. disabled, readonly): Use **boolean attributes** and reflect. +- **Stop and ask** when the 1st-gen uses a different pattern (e.g. only classes) and you want to change to attributes. + +### What accessibility pattern applies? + +- Match the **primary role** of the component (button, listbox, combobox, dialog, etc.) to native HTML or an existing accessible [pattern](https://www.w3.org/WAI/ARIA/apg/patterns/). +- If it composes several roles (e.g. combobox + listbox), follow the **composite** pattern and its keyboard and ARIA requirements. + +--- + +## Reference: Badge migration + +Use Badge as the reference implementation: + +| Area | 1st-gen (reference) | 2nd-gen core | 2nd-gen SWC | +|------|---------------------|--------------|-------------| +| **Base class** | `src/Badge.ts` (study as reference) | `Badge.base.ts` (behavior, validation) | — | +| **Concrete class** | — | — | `Badge.ts` (extends BadgeBase, render, styles) | +| **Types** | Own types | `Badge.types.ts` (VARIANTS_*, FixedValues, BadgeVariant) | Imports from core | +| **CSS** | `badge.css.ts` (Constructable) | — | `badge.css` (plain CSS module) | +| **Stories** | `stories/badge.stories.ts` | — | `stories/badge.stories.ts` (getStoryHelpers, argTypes from component) | +| **Tests** | `test/badge.test.ts`, `badge.a11y.spec.ts` | — | `test/badge.test.ts`, `test/badge.a11y.spec.ts` | + +**Paths:** + +- 1st-gen: `1st-gen/packages/badge/` +- 2nd-gen core: `2nd-gen/packages/core/components/badge/` +- 2nd-gen SWC: `2nd-gen/packages/swc/components/badge/` + +**Other reference components (by concern):** + +- **Link** — Variant and static-color attributes; test stories and a11y spec structure. +- **Radio** — Size from `SizedMixin`: declare `size` on SWC for CEM; custom control with `role="radio"`, no native input. +- **Checkbox** — Native `<input type="checkbox">`: base with abstract `inputElement`, `handleChange` with revert on preventDefault; SWC with `delegatesFocus`, inline SVG for checkmark/dash; size from mixin (declare on SWC); indeterminate state. + +--- + +## Style guides and resources + +- **Workspace:** [spectrum-css](https://github.com/adobe/spectrum-css) cloned **next to** this repo—see [Workspace setup](#workspace-setup). +- **TypeScript:** Team conventions; for 2nd-gen API patterns (static `readonly`, `window.__swc.warn`), see Phase 3 [API patterns](#api-patterns-statics-and-warnings) and 2nd-gen Badge (`core` + `swc`). +- **CSS:** [2nd-gen CSS style guide (CONTRIBUTOR-DOCS)](../../../../02_style-guide/01_css/README.md) — component CSS, custom properties, Spectrum→SWC migration, anti-patterns, property order +- **Testing:** [2nd gen testing conventions](../../../../01_contributor-guides/11_2ndgen_testing.md) +- **WCAG APG:** [https://www.w3.org/WAI/ARIA/apg/patterns/](https://www.w3.org/WAI/ARIA/apg/patterns/) +- **Component analysis:** [03_components/](../../../03_components/) — Step 1 [Cursor prompt](01_analyze-rendering-and-styling/README.md); optional **component-migration-analysis** Cursor skill alongside that flow. +- **2nd-gen Storybook guides:** [2nd-gen/packages/swc/.storybook/guides/](../../../../../2nd-gen/packages/swc/.storybook/guides/) +- **Accessibility:** [2nd-gen/packages/swc/.storybook/guides/accessibility-guides/](../../../../../2nd-gen/packages/swc/.storybook/guides/accessibility-guides/) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md index d66da29bee2..bdf468e530c 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md @@ -1,18 +1,20 @@ <!-- Generated breadcrumbs - DO NOT EDIT --> -[CONTRIBUTOR-DOCS](../../../../README.md) / [Project planning](../../../README.md) / [Workstreams](../../README.md) / [2nd-gen Component Migration](../README.md) / Step By Step / Factor rendering out of 1st-gen component +[CONTRIBUTOR-DOCS](../../../../README.md) / [Project planning](../../../README.md) / [Workstreams](../../README.md) / [2nd-gen Component Migration](../README.md) / Step By Step / Understand the 1st-gen component structure <!-- Document title (editable) --> -# Factor rendering out of 1st-gen component +# Understand the 1st-gen component structure <!-- Document content (editable) --> -- Use `git mv` to rename `[Component].ts` to `[Component].base.ts` -- Create a new `[Component].ts` file -- In `[Component].base.ts`, edit the component definition to make it an abstract class named `[Component]Base` -- In `[Component].ts`, import the `[Component]Base` class and define a new `[Component]` class extending from `[Component]Base` -- Move the stylesheet import from the `[Component].base.ts` file to the `[Component].ts` file -- Move the `render()` method and the static `styles` getter from the `[Component]Base` class to the `[Component]` class -- If the 1st-gen component has any rendering code that has been factored out of the `render()` method (e.g., into helper methods), move that code from `[Component]Base` to `[Component]` as well -- Confirm that the refactored component still renders and behaves the same, and that all tests continue to pass +> **Context:** This step is about understanding the 1st-gen component before building the 2nd-gen version. You do **not** need to refactor 1st-gen — it remains self-contained. + +When studying the 1st-gen implementation, identify: + +- The **rendering logic** — `render()` method, helper render methods, Lit directives used +- The **behavior logic** — properties, validation, lifecycle hooks, event handling +- The **styles** — CSS imports, constructable stylesheets +- The **mixins and controllers** — what shared utilities it depends on + +This understanding helps you decide what goes in the 2nd-gen **base class** (behavior) vs the **concrete class** (rendering and styles). See [Step 3: Create base class in 2nd-gen core](03_move-base-class-to-2nd-gen-core.md). diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/03_move-base-class-to-2nd-gen-core.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/03_move-base-class-to-2nd-gen-core.md index 3335f5e4bfc..3b007abe999 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/03_move-base-class-to-2nd-gen-core.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/02_step-by-step/03_move-base-class-to-2nd-gen-core.md @@ -1,16 +1,18 @@ <!-- Generated breadcrumbs - DO NOT EDIT --> -[CONTRIBUTOR-DOCS](../../../../README.md) / [Project planning](../../../README.md) / [Workstreams](../../README.md) / [2nd-gen Component Migration](../README.md) / Step By Step / Move base class to 2nd-gen core +[CONTRIBUTOR-DOCS](../../../../README.md) / [Project planning](../../../README.md) / [Workstreams](../../README.md) / [2nd-gen Component Migration](../README.md) / Step By Step / Create base class in 2nd-gen core <!-- Document title (editable) --> -# Move base class to 2nd-gen core +# Create base class in 2nd-gen core <!-- Document content (editable) --> +> **Note:** 1st-gen and 2nd-gen are independent — there is no runtime dependency between them. The base class is created in core for 2nd-gen use only. 1st-gen retains its own implementation. + - Create a directory for the component under `core/components` -- Move `[Component].base.ts` file from 1st-gen -- Add `index.ts` file -- Add the 2nd-gen `core` library to `dependencies` in the 1st-gen component's `package.json` file -- Update import statements in `[Component].ts` to import `[Component]Base.ts` from 2nd-gen `core` -- Confirm that the 1st-gen component still renders and behaves the same, and that all tests continue to pass +- Create `[Component].base.ts` using the 1st-gen implementation as a reference +- Apply incremental improvements where justified (bugs, accessibility, feature gaps) — avoid speculative rewrites +- Add `[Component].types.ts` for shared constants and types +- Add `index.ts` barrel file +- Confirm the base class compiles and is exported correctly from core diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/03_migration-project-planning.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/03_migration-project-planning.md new file mode 100644 index 00000000000..a12b1f3cbca --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/03_migration-project-planning.md @@ -0,0 +1,121 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Workstreams](../README.md) / [2nd-gen Component Migration](README.md) / Migration project planning (Epics and tickets) + +<!-- Document title (editable) --> + +# Migration project planning (Epics and tickets) + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [TODO: Greenfield 2nd-gen contributor guide](#todo-greenfield-2nd-gen-contributor-guide) +- [Epics and tickets](#epics-and-tickets) + - [Rationale](#rationale) + - [Epic template](#epic-template) + - [Ticket list](#ticket-list) + - [Mapping: tickets to phases](#mapping-tickets-to-phases) + - [Badge example](#badge-example) + - [When to split or combine tickets](#when-to-split-or-combine-tickets) + - [Tracking recommendation](#tracking-recommendation) + - [Quality gate checklist (for Epic closure)](#quality-gate-checklist-for-epic-closure) + +</details> + +<!-- Document content (editable) --> + +This doc is **project-management guidance** for tracking a component migration in Jira (or similar). For the technical sequence, quality gates, and phase checklists, use the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md). + +## TODO: Greenfield 2nd-gen contributor guide + +> **Planned:** A separate contributor guide for **new** 2nd-gen components **without** a 1st-gen counterpart is not written yet (Rise outlined this track). The [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) applies only when a 1st-gen package exists or is the migration target. **Add the Jira epic or ticket link here** when it is filed. + +--- + +## Epics and tickets + +Use one **Epic** per component migration and create **standard tickets** aligned to the 8 washing machine phases. This keeps scope clear, makes progress visible, and gives a consistent structure for planning and review. + +- **Ticket 8 (Phase 8: Review):** After **all seven** prior phase PRs are merged into the feature branch, run **final QA** on the full integration (lint, tests, Storybook, checklist, status table—see the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) Phase 8). Then **merge the feature branch to `main`**. Phase 8 is the last gate before that merge. + +- **One feature branch per Epic** (e.g. `2nd-gen/migrate-<component>`). All migration work lands there first—not on `main` until the Epic is finished. +- **Tickets 1–7:** Each ticket is delivered as a **PR merged into that feature branch**. Close the ticket when the PR is merged; the branch should always carry the integrated result of completed phases. +- **Ticket 8 (Phase 8: Review):** After **all seven** prior phase PRs are merged into the feature branch, run **final Q&A** on the full integration (lint, tests, Storybook, checklist, status table—see the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) Phase 8). Then **merge the feature branch to `main`** (or your repo’s default integration branch). Phase 8 is the last gate before that merge. + +### Rationale + +- **One Epic per component:** One migration = one Epic. All phase-level work is linked under it, so backlogs and boards stay easy to filter and report on. +- **Tickets aligned to phases:** Each phase becomes a ticket (or a small set). Acceptance criteria map to the phase’s “What to do” and quality gate in the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md), so the guide and the tickets stay in sync. +- **Consistent naming:** Same ticket titles across components (e.g. “Migrate [Component] — API”) so teams know what to expect and can reuse templates. + +### Epic template + +**Title:** `[Migration] 2nd-gen [Component]` + +- Branching: use a **dedicated feature branch** for this Epic; **tickets 1–7** merge via PR into that branch; **ticket 8** is final QA on the integrated branch, then **merge the feature branch to `main`**. + +- Migrate [Component] from 1st-gen to 2nd-gen following the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md). +- Scope: core base + types, SWC component, styles, a11y, tests, stories, and PR. +- Branching: use a **dedicated feature branch** for this Epic; **tickets 1–7** merge via PR into that branch; **ticket 8** is final Q&A on the integrated branch, then **merge the feature branch to `main`**. +- Reference: 2nd-gen Badge (`2nd-gen/packages/core/components/badge/`, `2nd-gen/packages/swc/components/badge/`). + +**Child issues:** Link the 8 phase tickets (or combined tickets) as subtasks or “is blocked by” / “blocks” as appropriate. Ticket 8 should depend on tickets 1–7 being merged into the feature branch. + +### Ticket list + +Create one ticket per phase (or combine where it makes sense; see guidance below). Treat **each ticket as one PR** that merges into the Epic’s **feature branch**—except that **ticket 8** is the **final Q&A on that branch** and ends with **merging the feature branch to `main`**. + +| # | Ticket title | Aligned phase | +|---|---------------|----------------| +| 1 | Migrate [Component] — Preparation | Phase 1: Preparation | +| 2 | Migrate [Component] — Setup | Phase 2: Setup | +| 3 | Migrate [Component] — API migration | Phase 3: API migration | +| 4 | Migrate [Component] — Styling | Phase 4: Styling | +| 5 | Migrate [Component] — Accessibility | Phase 5: Accessibility | +| 6 | Migrate [Component] — Testing | Phase 6: Testing | +| 7 | Migrate [Component] — Documentation | Phase 7: Documentation | +| 8 | Migrate [Component] — Review & PR | Phase 8: Review (final Q&A → merge feature branch to `main`) | + +Copy the corresponding phase’s “What to do,” “What to check,” and “Quality gate” from the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) into each ticket’s description or acceptance criteria. + +### Mapping: tickets to phases + +| Ticket | Phase | Key deliverables | +|--------|--------|-------------------| +| Preparation | 1 | Migration plan; component analysis read or created; breaking changes listed. | +| Setup | 2 | Core and SWC folders and files created; build passes; component importable. | +| API migration | 3 | Types in core; base and SWC API; JSDoc and @internal. | +| Styling | 4 | CSS migrated; tokens and variants; render() with classMap. | +| Accessibility | 5 | APG pattern applied; ARIA and keyboard; a11y tests. | +| Testing | 6 | Unit and a11y tests pass; coverage in place. | +| Documentation | 7 | JSDoc; Storybook stories; migration notes if needed. | +| Review & PR | 8 | Final Q&A on feature branch with phases 1–7 merged; checklist and status table done; **feature branch merged to `main`**. | + +### Badge example + +- **Epic:** `[Migration] 2nd-gen Badge` +- **Tickets:** “Migrate Badge — Preparation,” “Migrate Badge — Setup,” … “Migrate Badge — Review & PR.” +- Link each ticket to the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) and to the Badge paths (core and SWC). Use the [Reference: Badge migration](02_step-by-step/01_washing-machine-workflow.md#reference-badge-migration) table in that guide as an acceptance-criteria reference. + +### When to split or combine tickets + +- **Split a phase** when the work is large or done by different people (e.g. “Migrate [Component] — Styling (tokens)” and “Migrate [Component] — Styling (variants & render)”). Link the sub-tickets to the same phase in the guide and keep the phase quality gate as the overall exit condition. +- **Combine phases** only when scope is small and one ticket is clearer (e.g. “Migrate [Component] — Documentation & review” for a trivial component). In the combined ticket, list acceptance criteria from both phases and still run both quality gates before closing. +- **Keep Preparation and Review separate:** Do not merge Phase 1 or Phase 8 into others; they bookend the migration and should stay visible. + +### Tracking recommendation + +- **Board/view:** Filter by the migration Epic so all phase tickets for one component appear together. +- **Status:** Use the [status table](01_status.md) to mark steps (Analyze, Factor, Move to Core, etc.); use ticket status for phase-level “To Do / In progress / Done.” +- **Done definition:** For **tickets 1–7**, the ticket is done when its quality gate in the [washing machine workflow](02_step-by-step/01_washing-machine-workflow.md) is met and the **PR is merged into the migration feature branch**. For **ticket 8**, done when **final Q&A** on that branch is complete and the **feature branch is merged to `main`** (or in the same PR as the following phase when phases are combined—still land on the feature branch first until the final merge to `main`). + +### Quality gate checklist (for Epic closure) + +Before closing the migration Epic, confirm: + +- [ ] Tickets 1–7 are done: each phase’s PR merged into the **migration feature branch**. +- [ ] Phase 8 (Review) is complete: **final Q&A** on the integrated feature branch; **feature branch merged to `main`**. +- [ ] Component row in the [status table](01_status.md) is updated with checkmarks for all steps. +- [ ] No open blocking issues or follow-ups that belong to the same migration. diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/README.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/README.md index 3936e6e8737..21eaf0c15b6 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/README.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/02_2nd-gen-component-migration/README.md @@ -14,22 +14,26 @@ - [Status](01_status.md) - Step By Step - [Analyze rendering and styling](02_step-by-step/01_analyze-rendering-and-styling/README.md) - - [Factor rendering out of 1st-gen component](02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md) - - [Move base class to 2nd-gen core](02_step-by-step/03_move-base-class-to-2nd-gen-core.md) + - [Washing machine: migrating an existing 1st-gen component to 2nd-gen](02_step-by-step/01_washing-machine-workflow.md) + - [Understand the 1st-gen component structure](02_step-by-step/02_factor-rendering-out-of-1st-gen-component.md) + - [Create base class in 2nd-gen core](02_step-by-step/03_move-base-class-to-2nd-gen-core.md) - [Formalize Spectrum data model](02_step-by-step/04_formalize-spectrum-data-model.md) - [Add 2nd-gen SWC component](02_step-by-step/05_implement-2nd-gen-component.md) - [Migrate rendering & styles from Spectrum CSS](02_step-by-step/06_migrate-rendering-and-styles.md) - [Add stories for 2nd-gen component](02_step-by-step/07_add-stories-for-2nd-gen-component.md) +- [Migration project planning (Epics and tickets)](03_migration-project-planning.md) </details> <!-- Document content (editable) --> -The tactical process of migrating individual components to the multi-generation architecture: +The tactical process of building 2nd-gen components, using 1st-gen as a reference: -- Refactoring 1st-gen components to separate core functionality from generation-specific rendering -- Moving base classes into 2nd-gen Core -- Building corresponding 2nd-gen implementations +- Studying 1st-gen implementations to understand API, behavior, and edge cases +- Creating base classes in 2nd-gen Core (behavior and API) +- Building concrete 2nd-gen implementations in SWC (rendering and styles) - Migrating styles from the Spectrum CSS repository -Because our 1st-gen components vary in complexity and quality—some have known issues (a11y and otherwise) that we believe will require substantial changes or rewrites—we will add classes to 2nd-gen Core incrementally, based on component-specific roadmaps we'll build in parallel with spinning up the 2nd-gen project. +1st-gen and 2nd-gen are **independent** — there is no runtime dependency between them. We start from existing implementations and apply improvements incrementally. More dramatic rewrites should be informed by existing bugs, accessibility considerations, or feature disparity. + +Because our 1st-gen components vary in complexity and quality — some have known issues (a11y and otherwise) that we believe will require substantial changes — we will add classes to 2nd-gen Core incrementally, based on component-specific roadmaps. diff --git a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/README.md b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/README.md index aa788467cb7..a50480fcb83 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/README.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/02_workstreams/README.md @@ -23,6 +23,7 @@ - [2nd-gen Component Migration](02_2nd-gen-component-migration/README.md) - [Status](02_2nd-gen-component-migration/01_status.md) - Step By Step + - [Migration project planning (Epics and tickets)](02_2nd-gen-component-migration/03_migration-project-planning.md) - [Accessibility Improvements](03_accessibility-improvements/README.md) - [Component Improvements](04_component-improvements/README.md) - [1st-gen Spectrum 2 Enhancements](05_1st-gen-spectrum-2-enhancements/README.md) @@ -43,7 +44,7 @@ For more on how Workstreams (this section) and [Components](../03_components/REA - **[2nd-gen Definition and Development](./01_2nd-gen-definition-and-development/README.md)** - Building the 2nd-gen project from the ground up, including rendering layer, tooling, infrastructure, tests, Storybook, and documentation. -- **[2nd-gen Component Migration](./02_2nd-gen-component-migration/README.md)** - Tactical process of migrating individual components to enable core functionality sharing between 1st-gen and 2nd-gen. +- **[2nd-gen Component Migration](./02_2nd-gen-component-migration/README.md)** - Tactical process of building 2nd-gen components, using 1st-gen as a reference implementation. - **[Accessibility Improvements](./03_accessibility-improvements/README.md)** - Systematic work to maximize accessibility through expanded documentation, comprehensive audits, and issue remediation. diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md index afb902d8e2f..cab19cbf7cf 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md @@ -27,8 +27,11 @@ - Asset - [Asset migration roadmap](asset/rendering-and-styling-migration-analysis.md) - Avatar + - [Avatar accessibility migration analysis](avatar/accessibility-migration-analysis.md) + - [Avatar — 2nd-Gen Migration Plan](avatar/migration-plan.md) - [Avatar migration roadmap](avatar/rendering-and-styling-migration-analysis.md) - Badge + - [Badge accessibility migration analysis](badge/accessibility-migration-analysis.md) - [Badge migration roadmap](badge/rendering-and-styling-migration-analysis.md) - Button - [Button migration roadmap](button/rendering-and-styling-migration-analysis.md) @@ -39,6 +42,7 @@ - Color Field - [Color field migration roadmap](color-field/rendering-and-styling-migration-analysis.md) - Divider + - [Divider accessibility migration analysis](divider/accessibility-migration-analysis.md) - [Divider migration roadmap](divider/rendering-and-styling-migration-analysis.md) - Dropzone - [Dropzone migration roadmap](dropzone/rendering-and-styling-migration-analysis.md) @@ -67,6 +71,7 @@ - Progress Bar - [Progress bar migration roadmap](progress-bar/rendering-and-styling-migration-analysis.md) - Progress Circle + - [Progress circle accessibility migration analysis](progress-circle/accessibility-migration-analysis.md) - [Progress Circle migration roadmap](progress-circle/rendering-and-styling-migration-analysis.md) - Radio - [Radio migration roadmap](radio/rendering-and-styling-migration-analysis.md) @@ -75,6 +80,7 @@ - Slider - [Slider migration roadmap](slider/rendering-and-styling-migration-analysis.md) - Status Light + - [Status light accessibility migration analysis](status-light/accessibility-migration-analysis.md) - [Status Light migration roadmap](status-light/rendering-and-styling-migration-analysis.md) - Swatch - [Swatch migration roadmap](swatch/rendering-and-styling-migration-analysis.md) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/accessibility-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/accessibility-migration-analysis.md new file mode 100644 index 00000000000..5bf0096a6ac --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/accessibility-migration-analysis.md @@ -0,0 +1,176 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Avatar / Avatar accessibility migration analysis + +<!-- Document title (editable) --> + +# Avatar accessibility migration analysis + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) + - [Also read](#also-read) + - [What an avatar is](#what-an-avatar-is) + - [The linked variant ("avatar-link")](#the-linked-variant-avatar-link) + - [When to use something else](#when-to-use-something-else) +- [ARIA and WCAG context](#aria-and-wcag-context) + - [Pattern in the APG](#pattern-in-the-apg) + - [Guidelines that apply](#guidelines-that-apply) +- [Recommendations: `<swc-avatar>` (non-linked)](#recommendations-swc-avatar-non-linked) + - [ARIA roles, states, and properties](#aria-roles-states-and-properties) + - [Accessibility tree expectations](#accessibility-tree-expectations) + - [Keyboard and focus](#keyboard-and-focus) +- [Shadow DOM and cross-root ARIA](#shadow-dom-and-cross-root-aria) +- [Testing](#testing) + - [Automated tests](#automated-tests) +- [Summary checklist](#summary-checklist) +- [References](#references) + +</details> + +<!-- Document content (editable) --> + +## Overview + +This doc tells you how **`swc-avatar`** should work for **accessibility**. The target standard is **WCAG 2.2 Level AA**. + +### Also read + +[Avatar migration roadmap](./rendering-and-styling-migration-analysis.md) for DOM structure, CSS selectors, and size mapping. +[Avatar migration plan](./migration-plan.md) for the full Phase checklist. + +### What an avatar is + +An avatar is a **circular profile image** that identifies a person or entity. On its own it is a +**static image** — not interactive. Its only job is to display a recognisable visual cue. + +### The linked variant ("avatar-link") + +**The linked variant is not part of the 2nd-gen migration.** The Spectrum 2 spec does not include +a linked avatar variant — the `href` attribute and all `LikeAnchor` mixin properties (`target`, +`rel`, `download`, `referrerpolicy`, `type`) have been dropped. + +Consumers who need a linked avatar should wrap `<swc-avatar>` in a standard `<a>` element. The +`alt` attribute on `swc-avatar` becomes the link's accessible name. Do not use `alt=""` or +`decorative` on a linked avatar — the link would have no accessible name, violating WCAG 2.4.4. + +```html +<a href="https://example.com/profile"> + <swc-avatar alt="Jane Doe" src="/img/user.jpg"></swc-avatar> +</a> +``` + +**Scope decision:** The linked variant is **out of scope** for this migration. + +### When to use something else + +- Need a **button** that happens to show a face? Use **`swc-action-button`** with an avatar inside. +- Need a **removable chip** or **tagged user**? Use **`swc-tag`** with an avatar inside. +- The avatar itself should never carry `role="button"`. + +--- + +## ARIA and WCAG context + +### Pattern in the APG + +The [APG](https://www.w3.org/WAI/ARIA/apg/) does not list a dedicated "avatar" widget. + +**Non-linked avatar** — treat as an **`<img>`**: requires a text alternative (WCAG 1.1.1). + +### Guidelines that apply + +| Criterion | Plain meaning | +|-----------|---------------| +| [1.1.1 Non-text content](https://www.w3.org/TR/WCAG22/#non-text-content) | The avatar image must have a text alternative, or be explicitly marked decorative. | +| [1.4.1 Use of color](https://www.w3.org/TR/WCAG22/#use-of-color) | Color alone must not carry meaning. | +| [2.4.3 Focus order](https://www.w3.org/TR/WCAG22/#focus-order) | Non-linked avatar must not be in the tab order. | + +--- + +## Recommendations: `<swc-avatar>` (non-linked) + +### ARIA roles, states, and properties + +| Topic | What to do | +|-------|------------| +| **Image role** | The inner `<img>` already carries an implicit `img` role. Do **not** add `role="img"` to the host. | +| **Alt text (required)** | When `alt` is provided: set `alt="${alt}"` on the `<img>`. | +| **Decorative** | When `decorative` is set (with `alt=""`): the host receives `aria-hidden="true"`, removing the entire shadow tree from the accessibility tree. | +| **Neither `alt` nor `decorative`** | Set `alt=""` as a safe fallback on `<img>`. Emit a **DEBUG warning** directing the developer to add `alt` or `decorative`. | +| **Host role** | No `role` attribute on `:host`. The `<img>` inside provides the correct semantics. | +| **`disabled`** | Renders at reduced opacity — purely visual. Do not surface `aria-disabled`. The avatar remains in the accessibility tree. | + +### Accessibility tree expectations + +**Avatar with alt text:** + +``` +img "Jane Doe" +``` + +**Decorative avatar (`decorative` + `alt=""`):** + +``` +(not in accessibility tree — host has aria-hidden="true") +``` + +**Avatar with neither `alt` nor `decorative` (fallback — triggers DEBUG warning):** + +``` +img "" +``` + +### Keyboard and focus + +**Not focusable.** A non-linked avatar must not receive keyboard focus. No `tabindex` should be +set on the host or the inner `<img>`. + +--- + +## Shadow DOM and cross-root ARIA + +No cross-root ARIA issues for avatar. The accessible name flows naturally through the shadow DOM +via the `<img alt="…">` attribute. + +No `aria-labelledby` cross-shadow wiring is required. + +--- + +## Testing + +### Automated tests + +| Kind of test | What to check | +|--------------|----------------| +| **Unit — alt text** | `alt` provided → `alt="[value]"` on `<img>`. `decorative` set → host `aria-hidden="true"`. Neither → `alt=""` + DEBUG warning fires. | +| **Unit — DEBUG warnings** | Missing `alt` (no `decorative`) → warning fires. Setting `decorative` suppresses it. | +| **aXe + Storybook** | Run WCAG 2.x rules on all avatar stories. | +| **Playwright ARIA snapshots** | Cover: labeled avatar, decorative avatar, disabled avatar. | +| **Focus ring contrast** | Non-linked avatar is not focusable; no focus ring required. | + +--- + +## Summary checklist + +- [ ] Avatar with `alt` → `<img alt="[value]">`, not focusable. +- [ ] Avatar with `decorative` (+ `alt=""`) → host `aria-hidden="true"`, not focusable. +- [ ] Avatar with neither → `<img alt="">` + DEBUG warning. +- [ ] `disabled` → visual opacity only; avatar remains in accessibility tree. +- [ ] aXe passes on all Storybook stories. +- [ ] Playwright ARIA snapshot tests cover all states above. +- [ ] DEBUG warnings tested in unit tests. + +--- + +## References + +- [WAI-ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/) +- [WCAG 2.2](https://www.w3.org/TR/WCAG22/) +- [Using ARIA (read this first)](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) +- [Avatar migration roadmap](./rendering-and-styling-migration-analysis.md) +- [Avatar migration plan](./migration-plan.md) +- [React Aria Avatar](https://react-spectrum.adobe.com/Avatar) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/migration-plan.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/migration-plan.md new file mode 100644 index 00000000000..b6d8a840533 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/avatar/migration-plan.md @@ -0,0 +1,196 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Avatar / Avatar — 2nd-Gen Migration Plan + +<!-- Document title (editable) --> + +# Avatar — 2nd-Gen Migration Plan + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [1. 1st-Gen API Surface](#1-1st-gen-api-surface) + - [Properties](#properties) +- [2. 2nd-Gen API Surface (implemented)](#2-2nd-gen-api-surface-implemented) + - [Properties](#properties) + - [Dropped from 1st-gen](#dropped-from-1st-gen) +- [3. Dependencies](#3-dependencies) +- [4. Breaking Changes](#4-breaking-changes) + - [4.1 Size System](#41-size-system) + - [4.2 `--mod-*` Properties Removed](#42---mod--properties-removed) + - [4.3 Linked Variant Removed](#43-linked-variant-removed) + - [4.4 `isDecorative` → `decorative`](#44-isdecorative--decorative) + - [4.5 `label` → `alt`](#45-label--alt) + - [4.6 CSS Class Wrapper](#46-css-class-wrapper) +- [5. Migration Checklist](#5-migration-checklist) + - [Phase 2 — Setup](#phase-2--setup) + - [Phase 3 — API Migration](#phase-3--api-migration) + - [Phase 4 — Styling](#phase-4--styling) + - [Phase 5 — Accessibility](#phase-5--accessibility) + - [Phase 6 — Testing](#phase-6--testing) + - [Phase 7 — Documentation](#phase-7--documentation) + - [Phase 8 — Review](#phase-8--review) +- [6. Open Questions](#6-open-questions) +- [7. Reference](#7-reference) + +</details> + +<!-- Document content (editable) --> + +> **Input documents** +> - [Rendering & Styling Migration Analysis](./rendering-and-styling-migration-analysis.md) +> - [Washing Machine Workflow](../../02_workstreams/02_2nd-gen-component-migration/02_step-by-step/01_washing-machine-workflow.md) +> - 1st-gen source: `1st-gen/packages/avatar/src/Avatar.ts` +> - 1st-gen tests: `1st-gen/packages/avatar/test/` + +--- + +## 1. 1st-Gen API Surface + +### Properties + +| Property | Type | Default | Reflected | Source | +|---|---|---|---|---| +| `src` | `string` | `''` | No | `Avatar.ts` | +| `size` | `AvatarSize` (50\|75\|100\|200\|300\|400\|500\|600\|700) | `100` | Yes | `Avatar.ts` | +| `isDecorative` | `boolean` | `false` | Yes (`is-decorative`) | `Avatar.ts` | +| `label` | `string` | — | Yes | `LikeAnchor` mixin | +| `href` | `string` | — | Yes | `LikeAnchor` mixin | +| `disabled` | `boolean` | `false` | Yes | `LikeAnchor` mixin | +| `download` | `string` | — | Yes | `LikeAnchor` mixin | +| `rel` | `string` | — | Yes | `LikeAnchor` mixin | +| `target` | `string` | — | Yes | `LikeAnchor` mixin | +| `referrerpolicy` | `string` | — | Yes | `LikeAnchor` mixin | +| `type` | `string` | — | Yes | `LikeAnchor` mixin | + +--- + +## 2. 2nd-Gen API Surface (implemented) + +### Properties + +| Property | Type | Default | Reflected | Notes | +|---|---|---|---|---| +| `src` | `string` | `''` | No | Unchanged | +| `alt` | `string \| undefined` | `undefined` | No | Replaces `label`; pass `alt=""` for decorative | +| `size` | `AvatarSize` (50–1500) | `500` | Yes | Numeric scale extended; invalid values fall back to 500 | +| `outline` | `boolean` | `false` | Yes | Renders outline for visual separation; defaults to `true` in Avatar Group | +| `disabled` | `boolean` | `false` | Yes | Renders at reduced opacity; entity is inactive or unavailable | +| `decorative` | `boolean` | `false` | Yes | Marks image as decorative; sets `aria-hidden="true"` on host. Use together with `alt=""` for full semantic correctness. Replaces `isDecorative`. | + +### Dropped from 1st-gen + +| Property | Reason | +|---|---| +| `href`, `target`, `rel`, `download`, `referrerpolicy`, `type` | Linked variant dropped — not in Spectrum 2 avatar spec | + +--- + +## 3. Dependencies + +| Dependency | 1st-Gen Source | 2nd-Gen Equivalent | Status | +|---|---|---|---| +| `Focusable` mixin | `@spectrum-web-components/shared` | Not needed | **Closed — linked variant dropped** | +| `LikeAnchor` mixin | `@spectrum-web-components/shared` | Not needed | **Closed — linked variant dropped** | +| `SizedMixin` | N/A | Not used | **Closed — bespoke numeric getter/setter in `AvatarBase`** | +| `SpectrumElement` | `@spectrum-web-components/base` | `2nd-gen/packages/core/element/spectrum-element.ts` | Done | + +--- + +## 4. Breaking Changes + +### 4.1 Size System + +Numeric sizes kept (not T-shirt sizes). Scale extended from `50–700` → `50–1500`. Default changed from `100` → `500` (40 px, matching S2 spec). Invalid values fall back to `500`. + +### 4.2 `--mod-*` Properties Removed + +All `--mod-avatar-*` customization properties removed. Consumers must migrate to the explicit component-level custom properties (`--swc-avatar-size`, `--swc-avatar-outline-color`, `--swc-avatar-outline-width`). + +### 4.3 Linked Variant Removed + +`href` and all `LikeAnchor` properties are not carried forward. The Spectrum 2 avatar spec does not include a linked variant. + +### 4.4 `isDecorative` → `decorative` + +`isDecorative` and the `is-decorative` attribute are not carried forward. Consumers must migrate to the `decorative` attribute. Only `decorative` causes the host to receive `aria-hidden="true"`. Include `alt=""` alongside `decorative` for full semantic alignment with HTML `<img>` conventions. + +### 4.5 `label` → `alt` + +`label` is not carried forward. Consumers must migrate to `alt`. + +### 4.6 CSS Class Wrapper + +2nd-gen components use a `<div class="swc-Avatar">` wrapper. 1st-gen renders `<img>` directly into the shadow root. Consumers targeting shadow internals will need to update. + +--- + +## 5. Migration Checklist + +### Phase 2 — Setup +- [x] Create `2nd-gen/packages/core/components/avatar/` directory +- [x] Create `2nd-gen/packages/swc/components/avatar/` directory +- [x] Stub `Avatar.base.ts`, `Avatar.types.ts`, `index.ts` in core +- [x] Stub `Avatar.ts`, `Avatar.css`, `index.ts` in swc +- [x] Add packages to workspace; verify build passes + +### Phase 3 — API Migration +- [x] Define `AvatarSize` type in `Avatar.types.ts` +- [x] Define `AvatarBase` extending `SpectrumElement` with `src`, `alt`, `size`, `overBackground` +- [x] Add `static readonly VALID_SIZES` array +- [x] Implement `firstUpdated` to set `size` attribute if missing + +### Phase 4 — Styling +- [x] Add `<div class="swc-Avatar">` wrapper to render output +- [x] Size token mappings for all sizes (50–1500) +- [x] `over-background` outline rules (1px for 50–900, 2px for 1000–1500) +- [x] Remove all `--mod-avatar-*` properties +- [x] Run `stylelint` + +### Phase 5 — Accessibility +- [x] `alt` provided → `alt="[value]"` on `<img>` +- [x] `alt=""` (decorative) → `alt=""` + `aria-hidden="true"` on `<img>` +- [x] `alt` omitted → `alt=""` on `<img>` + DEBUG warning +- [x] DEBUG warning for missing `alt` +- [x] Host is not focusable (no `Focusable` mixin, no `tabIndex` set) +- [x] Host exposes no interactive role (`role="button"` / `role="link"`) +- [x] Playwright ARIA snapshot tests + +### Phase 6 — Testing +- [x] Port `avatar.test.ts` → `2nd-gen/packages/swc/components/avatar/test/avatar.test.ts` +- [x] Add Playwright `.a11y.spec.ts` file + +### Phase 7 — Documentation +- [x] JSDoc on all public properties in `Avatar.base.ts` +- [x] Storybook stories: Playground, Overview, Anatomy, Sizes, Decorative, OverBackground, InActionButton, Accessibility +- [x] Add migration notes for `--mod-*` removal and API changes +- [x] Update migration status doc + +### Phase 8 — Review +- [x] Run full lint suite +- [ ] QA all story variants visually +- [ ] At least one engineer review before merging to `main` + +--- + +## 6. Open Questions + +| ID | Question | Resolution | +|---|---|---| +| **OQ-1** | Size system: numeric vs T-shirt sizes? | **Closed** — numeric sizes kept and extended to 1500; bespoke getter/setter in `AvatarBase` (no `SizedMixin`) | +| **OQ-2** | `Focusable` mixin needed? | **Closed** — linked variant dropped; avatar is not focusable | +| **OQ-3** | `LikeAnchor` mixin needed? | **Closed** — linked variant dropped; `href` and related props not carried forward | +| **OQ-4** | `is-decorative` attribute name? | **Closed** — dropped entirely; replaced by `alt=""` (standard HTML semantics) | +| **OQ-5** | S2 tokens for sizes 800–1500 exist? | **Closed** — confirmed in `tokens.css`; all size rules implemented | +| **OQ-6** | `image` variant types (gradient, initials, guest)? | **Open** — S2 spec defines four image variants: `user image`, `gradient image`, `initials`, `guest`. Figma shows all four but provides no implementation detail (token names, gradient asset, initials derivation logic, fallback chain). Current implementation only supports `user image` via `src`. Remaining variants are a **known gap** — do not implement until design provides full spec for each variant including tokens, assets, and fallback behavior. | + +--- + +## 7. Reference + +- Reference implementation: `2nd-gen/packages/core/components/badge/Badge.base.ts` +- CSS migration guide: `CONTRIBUTOR-DOCS/02_style-guide/01_css/04_spectrum-swc-migration.md` +- 2nd-gen testing guide: `CONTRIBUTOR-DOCS/01_contributor-guides/11_2ndgen_testing.md` +- 2nd-gen core mixins: `2nd-gen/packages/core/mixins/` diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/badge/accessibility-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/badge/accessibility-migration-analysis.md new file mode 100644 index 00000000000..11d9ac447b3 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/badge/accessibility-migration-analysis.md @@ -0,0 +1,145 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Badge / Badge accessibility migration analysis + +<!-- Document title (editable) --> + +# Badge accessibility migration analysis + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) + - [Also read](#also-read) + - [What a badge is](#what-a-badge-is) + - [When to use something else](#when-to-use-something-else) +- [ARIA and WCAG context](#aria-and-wcag-context) + - [Pattern in the APG](#pattern-in-the-apg) + - [Guidelines that apply](#guidelines-that-apply) +- [Recommendations: `<swc-badge>`](#recommendations-swc-badge) + - [ARIA roles, states, and properties](#aria-roles-states-and-properties) + - [Shadow DOM and cross-root ARIA Issues](#shadow-dom-and-cross-root-aria-issues) + - [Accessibility tree expectations](#accessibility-tree-expectations) + - [Keyboard and focus](#keyboard-and-focus) +- [Testing](#testing) + - [Automated tests](#automated-tests) +- [Summary checklist](#summary-checklist) +- [References](#references) + +</details> + +<!-- Document content (editable) --> + +## Overview + +This doc tells you how **`swc-badge`** should work for **accessibility**. It matches the goal of **WCAG 2.2 Level AA** (common legal and team standard for accessible web content). + +### Also read + +[Badge migration roadmap](./rendering-and-styling-migration-analysis.md) for layout, CSS, and DOM changes. + +### What a badge is + +- A **small label** (status, category, tag). It is **not** something you click or tab to by default. + +### When to use something else + +- Need a **button**, **link**, **removable chip**, or **clickable** control? Use [Action Button](../action-button/rendering-and-styling-migration-analysis.md), [Tag](../tag/rendering-and-styling-migration-analysis.md), or a native link—not a badge. + +--- + +## ARIA and WCAG context + +### Pattern in the APG + +- The [APG](https://www.w3.org/WAI/ARIA/apg/) (Authoring Practices Guide) does **not** list a special “badge” widget. A badge is **not** a keyboard widget and does not need one fixed ARIA **role**. + +### Guidelines that apply + +| Idea | Plain meaning | +|------|----------------| +| [Use of color (WCAG 1.4.1)](https://www.w3.org/TR/WCAG22/#use-of-color) | Do not rely on **color alone**. The **words** on the badge (or a proper **name** for screen readers) must carry the meaning. | +| [Contrast (WCAG 1.4.3)](https://www.w3.org/TR/WCAG22/#contrast-minimum) | Text and icons should be **easy to see** against the background. | + +**Bottom line:** Treat **`swc-badge`** as **static content** on the page. Do not turn the core badge into a custom interactive control. + +--- + +## Recommendations: `<swc-badge>` + +### ARIA roles, states, and properties + +| Topic | What to do | +|-------|------------| +| **One semantic role** | The badge should represent **one** thing: a **static** label. **Do not** set a host `role` that turns it into a **different** kind of control (for example **`role="button"`** or **`role="progressbar"`**). If you need button, link, or other semantics, use [Action Button](../action-button/rendering-and-styling-migration-analysis.md), [Tag](../tag/rendering-and-styling-migration-analysis.md), or a native link—not a role override on **`swc-badge`**. | +| **Role** | You **do not** need a default `role` on the host. **Do not** force `role="img"` or `role="status"` for normal badges—it can confuse screen readers. | +| **Name (required)** | Every badge needs a **name** people can hear in a screen reader: text in the **default slot**, and/or **`aria-label`** / **`aria-labelledby`** on the element. | +| **Icon only** | If there is **no visible text**, set **`aria-label`** on the badge (or give the icon a proper **name**). Otherwise the badge has **no name** (fails WCAG). | +| **Decorative icon** | If the icon repeats the same idea as the text, hide it from assistive tech (**`aria-hidden="true"`** on the icon side). Follow **`swc-icon`** / Storybook docs. | +| **Icon that carries meaning alone** | The icon needs **`role="img"`** and a short **label**, or the **host** needs **`aria-label`**. | +| **`variant`, `size`, `subtle`, `outline`, `fixed`** | These are **visual only**. Do **not** auto-map them to things like `aria-invalid` or live regions. The **words** on the badge carry meaning; color is **extra**. | +| **Docs** | Do **not** say **`variant`** adds ARIA by itself unless code really does that. Say the badge is **not interactive**. Do **not** list **Tab / Space / Enter** as normal badge keys. For real actions, use [Action Button](../action-button/rendering-and-styling-migration-analysis.md) or [Tag](../tag/rendering-and-styling-migration-analysis.md). | + +### Shadow DOM and cross-root ARIA Issues + +None + +### Accessibility tree expectations + +**Badge with text** + +- Screen readers should hear the **same text** as the visible label (from the default slot). + +**Badge with icon + text** + +- Name usually mixes **text + icon label** (or **`aria-label`** on the host if you use it), unless the icon is decorative. + +**Icon-only badge** (use only when space is very tight) + +- There **must** be a name from **`aria-label`** or a labeled icon. Tests should check that this name **shows up** in snapshots. + +**Where it sits in the page** + +- The badge sits **inside** its parent (row, card, cell). It is **not** its own page region unless the app wraps it that way on purpose. + +### Keyboard and focus + +**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element. + +--- + +## Testing + +### Automated tests + +| Kind of test | What to check | +|--------------|----------------| +| **Unit** | Host is **not** focusable by default. Stories with labels have **slot text** (or another name). | +| **aXe + Storybook** | Run **WCAG 2.x** rules on badge stories (same pipeline as other 2nd-gen components). | +| **Playwright ARIA snapshots** | Keep **`badge.a11y.spec.ts`** up to date. Cover **text-only**, **icon + text**, and **icon-only** when those stories are stable. | +| **Color contrast** | Run **color-contrast** checks on semantic and non-semantic variant stories. | + +--- + +## Summary checklist + +- [ ] Stories use **real labels** (“Error,” “Engineering,” “on hold”), not **token names** (“celery,” “positive,” “informative”) as the only text. +- [ ] The badge stays **non-interactive** (no focus, no fake button behavior). +- [ ] **Icon-only** use is documented; **`aria-label`** (or labeled icon) is required. Storybook **Accessibility** story shows this. +- [ ] Docs do **not** claim **`variant`** sets ARIA unless code does. +- [ ] The **accessibility tree** shows label **text** (or **`aria-label`** / icon label) where needed; check snapshots or tools. +- [ ] **Dev mode** warns when badge has **no** accessible name (optional but recommended). +- [ ] **ARIA snapshot** tests cover main badge stories. +- [ ] **Unit tests** prove the badge is **not** in the **Tab** order by default. +- [ ] **aXe** (WCAG 2.x tags) runs on badge stories. + +--- + +## References + +- [WAI-ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/) +- [WCAG 2.2](https://www.w3.org/TR/WCAG22/) +- [Using ARIA (read this first)](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) +- [Badge migration roadmap](./rendering-and-styling-migration-analysis.md) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/divider/accessibility-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/divider/accessibility-migration-analysis.md new file mode 100644 index 00000000000..8e4634e73e7 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/divider/accessibility-migration-analysis.md @@ -0,0 +1,140 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Divider / Divider accessibility migration analysis + +<!-- Document title (editable) --> + +# Divider accessibility migration analysis + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) + - [Also read](#also-read) + - [What a divider is](#what-a-divider-is) + - [When to use something else](#when-to-use-something-else) +- [ARIA and WCAG context](#aria-and-wcag-context) + - [Pattern in the APG](#pattern-in-the-apg) + - [Guidelines that apply](#guidelines-that-apply) +- [Recommendations: `<swc-divider>`](#recommendations-swc-divider) + - [ARIA roles, states, and properties](#aria-roles-states-and-properties) + - [Shadow DOM and cross-root ARIA Issues](#shadow-dom-and-cross-root-aria-issues) + - [Accessibility tree expectations](#accessibility-tree-expectations) + - [Keyboard and focus](#keyboard-and-focus) +- [Testing](#testing) + - [Automated tests](#automated-tests) +- [Summary checklist](#summary-checklist) +- [References](#references) + +</details> + +<!-- Document content (editable) --> + +## Overview + +This doc explains how **`swc-divider`** should work for **accessibility**. It supports **WCAG 2.2 Level AA**. + +### Also read + +[Divider migration roadmap](./rendering-and-styling-migration-analysis.md) for visuals and DOM. + +### What a divider is + +- A **line** that splits sections or groups of controls. It is **not** draggable and **not** a focus target by default. + +### When to use something else + +- For a **split pane** users can move with the keyboard, use a **window splitter** pattern ([APG](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/)), not the plain divider. + +--- + +## ARIA and WCAG context + +### Pattern in the APG + +- There is **no** page in the APG named “divider.” + +### Guidelines that apply + +| Idea | Plain meaning | +|------|----------------| +| [`separator` role](https://www.w3.org/TR/wai-aria-1.2/#separator) | A **non-focusable** divider maps to a **separator** in the accessibility tree. **Do not** add progress values (`aria-valuenow`, etc.). | +| [`aria-orientation`](https://www.w3.org/TR/wai-aria-1.2/#aria-orientation) | Use **`vertical`** for vertical dividers. For horizontal lines, **leave the attribute off** (default is horizontal). | +| [Non-text contrast (WCAG 1.4.11)](https://www.w3.org/TR/WCAG22/#non-text-contrast) | The line should be **visible enough** next to its background, especially with **`static-color`** on photos or tinted areas. | +| [Info and relationships (WCAG 1.3.1)](https://www.w3.org/TR/WCAG22/#info-and-relationships) | **Headings** and **landmarks** still define sections. A divider **helps** layout; it **does not replace** a heading. | + +**Bottom line:** Keep **`swc-divider`** as a **separator** with the right **orientation**. Do not pretend it is keyboard-driven unless you ship a different, interactive pattern. + +--- + +## Recommendations: `<swc-divider>` + +### ARIA roles, states, and properties + +| Topic | What to do | +|-------|------------| +| **`role="separator"`** | **Prescribed** and **fixed** on the host (`DividerBase`). It must **not** be author-overridable in implementation or docs. **Do not** switch to `presentation`, `none`, or any other role; if that fits better, use **different** markup or a **different** pattern. **`swc-divider`** maps to **one** semantic role only. | +| **`aria-orientation`** | Set **`vertical`** when the divider is vertical. For horizontal, **omit** it. | +| **Docs** | Tell authors to pair dividers with **headings** or **landmarks** when section structure matters. Ensure that docs examples use divders in this way. Too many separators can make screen readers **chatty**—use **fewer** lines when you can. | + +### Shadow DOM and cross-root ARIA Issues + +None + +### Accessibility tree expectations + +#### Horizontal line** + +- **Role:** **separator** (horizontal by default). +- **Name:** Usually **none**. In rare cases an app may set **`aria-label`**—that should be uncommon. +- **Focus:** **Not** focusable. + +#### Vertical line** + +- Same as horizontal, plus **`aria-orientation="vertical"`**. + +#### Where it sits + +- Between named **siblings** (e.g. toolbar groups, landmark sections, etc.). It should **not** be the **only** clue for “what section is this?”—use **headings** too when needed. + +### Keyboard and focus + +**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element. + +--- + +## Testing + +### Automated tests + +| Kind of test | What to check | +|--------------|----------------| +| **Unit** | **`role="separator"`**. **`aria-orientation="vertical"`** when `vertical` is true; **not** set (or default horizontal) when false. **Role + orientation** stay in sync if `vertical` toggles. Host is **not** focusable. | +| **aXe + Storybook** | **WCAG 2.x** rules on divider stories. | +| **Playwright ARIA snapshots** | Keep **`divider.a11y.spec.ts`** (overview, sizes, vertical, static colors, …). | +| **Contrast** | **Color-contrast** / non-text checks where they matter, especially **`static-color`** stories. | + +--- + +## Summary checklist + +- [ ] Stories use **real section text** around dividers—not only **`size`** or **`static-color`** as if they were user-facing labels. +- [ ] Code keeps **`role="separator"`** and correct **`aria-orientation`** for vertical dividers. +- [ ] Divider stays **non-interactive** (no Tab stop). +- [ ] Docs explain **headings / landmarks** vs **divider-only** layout. +- [ ] **`static-color`** and contrast are documented; Storybook **Accessibility** matches. +- [ ] Tree checks show **separator**; vertical stories show **vertical**; no surprise **name** unless intended. +- [ ] **ARIA snapshots** for **horizontal** and **vertical** dividers. +- [ ] **Unit tests** prove **no** **Tab** focus on the divider by default. +- [ ] **aXe** (WCAG 2.x tags) runs on divider stories. + +--- + +## References + +- [WAI-ARIA 1.2: separator](https://www.w3.org/TR/wai-aria-1.2/#separator) +- [WCAG 2.2](https://www.w3.org/TR/WCAG22/) +- [Using ARIA (read this first)](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) +- [Divider migration roadmap](./rendering-and-styling-migration-analysis.md) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/field-label/rendering-and-styling-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/field-label/rendering-and-styling-migration-analysis.md index 27fb7cd2fcf..bb8ef824f4e 100644 --- a/CONTRIBUTOR-DOCS/03_project-planning/03_components/field-label/rendering-and-styling-migration-analysis.md +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/field-label/rendering-and-styling-migration-analysis.md @@ -183,8 +183,6 @@ None found for this component. 2. **Zero-width non-joiner**: Added `⁠` (zero-width non-joiner) between label text and required asterisk icon to prevent text wrapping issues in internationalized content 3. **Static color support**: Added support for `--staticBlack` and `--staticWhite` variants through the `staticColor` parameter -</details> - ### CSS => SWC mapping | CSS selector | Attribute or slot | Status | diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md new file mode 100644 index 00000000000..511eeaba1e5 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md @@ -0,0 +1,157 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Progress Circle / Progress circle accessibility migration analysis + +<!-- Document title (editable) --> + +# Progress circle accessibility migration analysis + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) + - [Also read](#also-read) + - [What it is](#what-it-is) + - [What it is not](#what-it-is-not) + - [Related](#related) +- [ARIA and WCAG context](#aria-and-wcag-context) + - [Pattern in the APG](#pattern-in-the-apg) + - [Guidelines that apply](#guidelines-that-apply) +- [Recommendations: `<swc-progress-circle>`](#recommendations-swc-progress-circle) + - [ARIA roles, states, and properties](#aria-roles-states-and-properties) + - [Shadow DOM and cross-root ARIA Issues](#shadow-dom-and-cross-root-aria-issues) + - [Accessibility tree expectations](#accessibility-tree-expectations) + - [Keyboard and focus](#keyboard-and-focus) +- [Testing](#testing) + - [Automated tests](#automated-tests) +- [Summary checklist](#summary-checklist) +- [References](#references) + +</details> + +<!-- Document content (editable) --> + +## Overview + +This doc explains how **`swc-progress-circle`** should work for **accessibility**. It supports **WCAG 2.2 Level AA**. + +### Also read + +[Progress circle migration roadmap](./rendering-and-styling-migration-analysis.md). + +### What it is + +- A **circle** that shows **progress** (0–100) or a **busy** animation when the time to finish is unknown. +- It is **read-only**: the user does **not** type or arrow-key a value here. + +### What it is not + +- The **spinning progress icon** that is shown in a button or input in its pending state. That should be an icon instead. + +### Related + +- **Straight bar** progress → [Progress bar migration roadmap](../progress-bar/rendering-and-styling-migration-analysis.md). (A matching a11y doc may be added later.) + +--- + +## ARIA and WCAG context + +### Pattern in the APG + +- The [progress bar pattern](https://www.w3.org/WAI/ARIA/apg/patterns/progressbar/) fits **read-only** progress: right **role**, **values**, **name**, and **not** in the **Tab** order unless you build something special. + +### Guidelines that apply + +| Idea | Plain meaning | +|------|----------------| +| [`progressbar` role](https://www.w3.org/TR/wai-aria-1.2/#progressbar) | Needs a **name**. When you know the percent, expose **min**, **max**, **current value**, and **spoken text** (e.g. “45%”). When you **don’t** know the percent (**indeterminate**), **drop** the value attributes (see `ProgressCircleBase` in the repo). | +| [Non-text content (WCAG 1.1.1)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html) | The **SVG** ring should not fight the host **`progressbar`**. Usually the **host** holds the name and values; inner shapes are **visual**. | +| [Use of color (WCAG 1.4.1)](https://www.w3.org/TR/WCAG22/#use-of-color) | Do not rely on **ring color alone**. **Values** and **label** carry the state. | +| [Non-text contrast (WCAG 1.4.11)](https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast) | Meaningful parts of the **ring** are **graphical objects** and need **at least 3:1** contrast with **adjacent** colors. At **0%** progress, the **empty track** is often the only visible ring detail—if it **does not** contrast enough with the **background**, the control can fail this criterion. Test **`static-color`**, photos, and **thin** strokes carefully. | +| [Pause, stop, hide (WCAG 2.2.2)](https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html) | **Loading animation** (including **indeterminate** spin) must be **perceivable** and controllable per WCAG. Respect **reduced motion** where the platform supports it. Align **motion tokens** with Spectrum guidance across libraries where applicable (for example internal targets such as **~1s** vs **~2s** per revolution for spinner tokens). If **flicker** is a risk, define **fallback** behavior in design and docs. | + +**Bottom line:** Ship a **non-focusable** **`progressbar`** with the **determinate** vs **indeterminate** rules in **`ProgressCircleBase`** (`2nd-gen/packages/core/components/progress-circle/ProgressCircle.base.ts`). + +--- + +## Recommendations: `<swc-progress-circle>` + +### ARIA roles, states, and properties + +| Topic | What to do | +|-------|------------| +| **`role="progressbar"`** | **Prescribed** and **fixed** on the **host**. It must **not** be author-overridable in implementation or docs. If another role is needed, use a **different** component or pattern—not a role change on **`swc-progress-circle`**. This element satisfies **one** semantic role only. | +| **Name (required)** | Supply **`label`**, **slot text**, **`aria-label`**, or **`aria-labelledby`** ([WCAG 4.1.2](https://www.w3.org/TR/WCAG22/#name-role-value)). Prefer **`aria-labelledby`** when a **visible** label exists; use **`aria-label`** for a short programmatic name when it does not. If not label is given, set default label to "Loading", and include a dev mode warning. The **dev warning** in the base lists these—keep its wording correct for **`swc-progress-circle`** (not only old tag names). | +| **Known percent** (`indeterminate` = false) | Set **`aria-valuemin="0"`**, **`aria-valuemax="100"`**, **`aria-valuenow`** = **`progress`**, **`aria-valuetext`** = **localized** percent string (`formatProgress()`). Update when **`progress`** or language changes. | +| **0% appearance ([WCAG 1.4.11](https://www.w3.org/WAI/WCAG22/Understanding/non-text-contrast))** | When **`progress`** is **0**, show a **small** filled segment of the circle (or another treatment that keeps **graphical** ring details at **at least 3:1** with adjacent colors). A **fully empty** ring at **0%** often fails **non-text contrast** because the **track** alone is too weak against the background. **`aria-valuenow`**, **`aria-valuetext`**, and any visible **percent** must still read as **0%**—the minimum fill is for **perception**, not to misstate the value. | +| **Unknown time** (`indeterminate` = true) | **Remove** min, max, now, and valuetext so assistive tech treats it as **busy** / unknown length. | +| **`label` vs slot** | Slot change can **copy** into **`label`**. Docs should say: pick **one** clear naming path. **Default** copy (“Loading”) should be applied when no label is given, but component should be given a label that is **as specific as possible** when context is known (“Uploading document,” “Loading status checks”). | +| **`size` / `static-color`** | **Looks only**—no required ARIA mapping. | +| **Motion / animation** | Meet **[WCAG 2.2.2](https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html)** for **determinate** and **indeterminate** loading animation. Follow team **reduced-motion** rules. Align **Spectrum motion tokens** across libraries where applicable (for example **~1s** vs **~2s** per revolution for spinner tokens). If **flicker** is a risk, document **fallback** behavior in design and docs. | +| **Docs** | Say **read-only**: **no Tab stop**, **no arrow keys** to change value; distinct from a progress icon for a button in pending state. Warn against **over-announcing**: **never** **`aria-live="assertive"`**; use **`aria-live="polite"`** only **rarely**, especially when **multiple** components or live regions update. | + +### Shadow DOM and cross-root ARIA Issues + +None + +### Accessibility tree expectations + +#### Known percent + +- **Role:** **progressbar** with a **clear name** (label / slot / `aria-label` / `aria-labelledby`). +- **Values:** min, max, now, valuetext as above. + +#### Busy / unknown + +- **Role:** **progressbar** with a **name**, **without** numeric value attrs (per implementation). + +#### Good names + +- Use **specific** phrases: “Uploading document,” “Processing request.” Avoid **only** “Loading” when you can be clearer. The **percent** belongs in **value / valuetext**, not as a substitute for **what** is happening. + +### Keyboard and focus + +**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element. + +--- + +## Testing + +### Automated tests + +| Kind of test | What to check | +|--------------|----------------| +| **Unit** | **`role="progressbar"`**. **Determinate** vs **indeterminate** attrs match **`ProgressCircleBase`**. Host is **not** focusable. **`label` / slot / `aria-label`** give a **name** in tests. | +| **aXe + Storybook** | **WCAG 2.x** on progress-circle stories. | +| **Playwright ARIA snapshots** | Keep **`progress-circle.a11y.spec.ts`** (overview, anatomy, sizes, static colors, progress values, **indeterminate**). | +| **Contrast** | Run where **`static-color`** and default stories need it. | +| **Motion / reduced motion** | Where stories animate, confirm **reduced-motion** behavior, **Spectrum** token alignment where relevant, and **WCAG 2.2.2** / **flicker** fallback expectations match product rules. | + +--- + +## Summary checklist + +- [ ] Stories use **task-specific** labels (“Uploading document”), not **only** “Loading” or **token** names from **`size`** / **`static-color`**. +- [ ] **Known percent** stories show **min / max / now / valuetext** matching **`progress`** and locale. +- [ ] **Indeterminate** stories **omit** value attrs as required. +- [ ] Default build is **not focusable**; docs match **read-only** behavior. +- [ ] Tree / snapshots show **`progressbar`** + good **name**; indeterminate matches **busy** pattern. +- [ ] **Dev warning** for missing name stays on; user-facing text uses the right **element name** where possible. +- [ ] **ARIA snapshots** cover **determinate**, **indeterminate**, and other main stories. +- [ ] **Unit tests** prove **no** **Tab** focus by default. +- [ ] **aXe** (WCAG 2.x tags) runs on progress-circle stories. +- [ ] Docs and examples **never** recommend **`aria-live="assertive"`** for loading; **`aria-live="polite"`** is **rare** only, with a warning that **many** updating components or regions stay **noisy**. + +--- + +## References + +- [WAI-ARIA 1.2: progressbar](https://www.w3.org/TR/wai-aria-1.2/#progressbar) +- [APG: progress bar pattern](https://www.w3.org/WAI/ARIA/apg/patterns/progressbar/) +- [WCAG 2.2](https://www.w3.org/TR/WCAG22/) +- [WCAG 2.2.2: pause, stop, hide (understanding)](https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html) +- [Using ARIA (read this first)](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) +- [Figma: Loading animation discovery](https://www.figma.com/design/42VzvpW262EAUbYsadO4e8/Loading-animation-discovery?node-id=478-948207&t=RVTbvK49jUbfoa0P-0) +- [Progress circle migration roadmap](./rendering-and-styling-migration-analysis.md) diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.md new file mode 100644 index 00000000000..52c41dc1cc8 --- /dev/null +++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.md @@ -0,0 +1,143 @@ +<!-- Generated breadcrumbs - DO NOT EDIT --> + +[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Status Light / Status light accessibility migration analysis + +<!-- Document title (editable) --> + +# Status light accessibility migration analysis + +<!-- Generated TOC - DO NOT EDIT --> + +<details open> +<summary><strong>In this doc</strong></summary> + +- [Overview](#overview) + - [Also read](#also-read) + - [What it is](#what-it-is) + - [When to use something else](#when-to-use-something-else) +- [ARIA and WCAG context](#aria-and-wcag-context) + - [Pattern in the APG](#pattern-in-the-apg) + - [Guidelines that apply](#guidelines-that-apply) +- [Recommendations: `<swc-status-light>`](#recommendations-swc-status-light) + - [ARIA roles, states, and properties](#aria-roles-states-and-properties) + - [Shadow DOM and cross-root ARIA Issues](#shadow-dom-and-cross-root-aria-issues) + - [Accessibility tree expectations](#accessibility-tree-expectations) + - [Keyboard and focus](#keyboard-and-focus) +- [Testing](#testing) + - [Automated tests](#automated-tests) +- [Summary checklist](#summary-checklist) +- [References](#references) + +</details> + +<!-- Document content (editable) --> + +## Overview + +This doc explains how **`swc-status-light`** should work for **accessibility**. It supports **WCAG 2.2 Level AA**. + +### Also read + +[Status light migration roadmap](./rendering-and-styling-migration-analysis.md). + +### What it is + +- A **colored dot** plus **text** that shows status or category. It is **not** a live feed by default and **not** something you tab to. + +### When to use something else + +- **Clickable** or **removable** labels → [Tag](../tag/rendering-and-styling-migration-analysis.md) or [Action Button](../action-button/rendering-and-styling-migration-analysis.md). +- **Small label without the dot** → [Badge](../badge/accessibility-migration-analysis.md). + +--- + +## ARIA and WCAG context + +### Pattern in the APG + +- The APG does **not** list a “status light” widget. This part is **not** a keyboard pattern. + +### Guidelines that apply + +| Idea | Plain meaning | +|------|----------------| +| [Use of color (WCAG 1.4.1)](https://www.w3.org/TR/WCAG22/#use-of-color) | The **dot color** is **not** enough by itself. The **text** (or another proper **name**) must explain the status. | +| [Contrast (WCAG 1.4.3)](https://www.w3.org/TR/WCAG22/#contrast-minimum) | Text and dot need enough **contrast** on the background. | +| [`status` role](https://www.w3.org/TR/wai-aria-1.2/#status) | This role means **live updates**. **Do not** put `role="status"` or `aria-live` on a **static** status light—it can announce too often or at the wrong time. | + +**Bottom line:** Treat it as **plain content** with a **visible label**. The dot in CSS (`::before`) is **extra visual**; the **words** carry the meaning. + +--- + +## Recommendations: `<swc-status-light>` + +### ARIA roles, states, and properties + +| Topic | What to do | +|-------|------------| +| **One semantic role** | Keep **one** clear semantics: static status text with an **accessible name**. **Do not** use the host to pretend this is a **different** widget (for example **`role="button"`**). If you need interaction, use [Action Button](../action-button/rendering-and-styling-migration-analysis.md) or [Tag](../tag/rendering-and-styling-migration-analysis.md)—not a role override on **`swc-status-light`**. | +| **Role** | You **do not** need a special default role. **Do not** add `role="status"`, `role="img"`, or `aria-live` unless a **separate** spec says content **updates live** and you document that. | +| **Name (required)** | There **must** be text in the **default slot** (or **`aria-label`** / **`aria-labelledby`**). **Empty** with no name breaks [WCAG 4.1.2](https://www.w3.org/TR/WCAG22/#name-role-value). | +| **The dot** | Built as a **`::before`** shape in 2nd-gen CSS. It is **decoration** if the text already explains the status—no extra ARIA node for the dot. | +| **`variant` / `size`** | **Looks only.** Do **not** map **`variant`** to ARIA states (for example, do not auto-set `aria-invalid` from `negative`). Meaning comes from **your words**, not the token name (“celery,” “positive,” …). | +| **`disabled` / `aria-disabled`** | **Not** part of Spectrum 2 **`swc-status-light`**. Say “unavailable” in the **label text** (and style if needed), not with `disabled` on a non-control. | +| **Docs** | Say it is **not interactive**. **Do not** list **Tab / Space / Enter** as normal behavior. **Do not** say **`variant`** sets ARIA by itself. | + +### Shadow DOM and cross-root ARIA Issues + +None + +### Accessibility tree expectations + +**With text in the slot** + +- Screen readers should get the **label** from that text. +- The part is **not** focusable. Spectrum 2 does **not** use **`aria-disabled`**. + +**If the slot is empty** + +- You **must** supply **`aria-label`** (or **`aria-labelledby`**) or you have **no name**. + +**Where it sits** + +- **Inline** in a cell, list item, field group, etc. It is **not** a page landmark by itself. + +### Keyboard and focus + +**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element. + +--- + +## Testing + +### Automated tests + +| Kind of test | What to check | +|--------------|----------------| +| **Unit** | Host is **not** focusable. Fixture has **text** or another **accessible name**. **`disabled` / `aria-disabled`** are **not** set by 2nd-gen code. | +| **aXe + Storybook** | **WCAG 2.x** rules on status-light stories. | +| **Playwright ARIA snapshots** | Keep **`status-light.a11y.spec.ts`** (overview, semantic + non-semantic variants, sizes). | +| **Contrast** | Checks on variant stories with **realistic** backgrounds. | + +--- + +## Summary checklist + +- [ ] Stories use **real status words** (“Approved,” “Sync failed,” “On hold”), not **token names** (“positive,” “celery,” “fuchsia”) as the only label. +- [ ] Part stays **non-interactive** (no Tab focus). +- [ ] Docs say **`disabled` / `aria-disabled`** are **out** for 2nd-gen; “unavailable” is shown in **copy** instead. +- [ ] Docs do **not** say **`variant`** adds ARIA or live regions by itself. +- [ ] Tree shows **slot text** or **`aria-label`**; snapshots or tools confirm. +- [ ] Optional: **dev warning** when slot is empty **and** there is still **no** name ([WCAG 4.1.2](https://www.w3.org/TR/WCAG22/#name-role-value)). +- [ ] **ARIA snapshot** tests for main stories. +- [ ] Test proves **no** **Tab** focus by default. +- [ ] **aXe** (WCAG 2.x tags) runs on status-light stories. + +--- + +## References + +- [WAI-ARIA 1.2](https://www.w3.org/TR/wai-aria-1.2/) +- [WCAG 2.2](https://www.w3.org/TR/WCAG22/) +- [Using ARIA (read this first)](https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/) +- [Status light migration roadmap](./rendering-and-styling-migration-analysis.md) diff --git a/CONTRIBUTOR-DOCS/README.md b/CONTRIBUTOR-DOCS/README.md index fbcfe9d4708..31115947481 100644 --- a/CONTRIBUTOR-DOCS/README.md +++ b/CONTRIBUTOR-DOCS/README.md @@ -31,7 +31,8 @@ - [Tools vs packages: where code lives](01_contributor-guides/12_tools-vs-packages.md) - [Style guide](02_style-guide/README.md) - [2nd-Gen CSS](02_style-guide/01_css/README.md) - - [Linting tools](02_style-guide/02_linting-tools.md) + - [2nd-gen TypeScript](02_style-guide/02_typescript/README.md) + - [Linting tools](02_style-guide/03_linting-tools.md) - [Testing guide](02_style-guide/04_testing/README.md) - [Project planning](03_project-planning/README.md) - [Objectives and strategy](03_project-planning/01_objectives-and-strategy.md) @@ -62,13 +63,13 @@ Spectrum Web Components is currently in transition from its first generation (1s These docs contain essential information about the SWC project for both maintainers (members of the core team) and contributors from outside the core team. -The docs are organized into three main sections to help you find the information you need: +The docs are organized into sections to help you find the information you need: **[Contributor Guides](./01_contributor-guides/README.md)** - Topical guides for working on the project. This section includes guides for getting started, understanding processes, and accomplishing specific tasks like adding new components or editing these contributor docs themselves. When you change doc structure or headings, see [Authoring contributor docs](./01_contributor-guides/07_authoring-contributor-docs/README.md) to regenerate navigation and verify links. **[Style Guide](./02_style-guide/README.md)** - Comprehensive style guide covering project-wide conventions and area-specific rules. This section is useful for human reference and for AI-assisted work, documenting our approaches to linting, JSDoc conventions, component structure, and other coding standards. -**[Accessibility Guide](./01_contributor-guides/09_accessibility-testing.md)** - Accessibility guide covering essential accessibility knowledge and practices for customers and contributors to Spectrum Web Components. +**[Accessibility testing](./01_contributor-guides/09_accessibility-testing.md)** - Automated accessibility testing, snapshots, and manual testing expectations for pull requests. **[Project Planning](./03_project-planning/README.md)** - Strategic planning documentation including objectives, workstreams, component roadmaps, and milestones. This section contains: diff --git a/YARN_LOG.txt b/YARN_LOG.txt deleted file mode 100644 index 98ee414b6e0..00000000000 --- a/YARN_LOG.txt +++ /dev/null @@ -1,31 +0,0 @@ -➤ YN0000: · Yarn 4.9.2 -➤ YN0000: ┌ Resolution step -➤ YN0000: └ Completed in 0s 234ms -➤ YN0000: ┌ Post-resolution validation -➤ YN0060: │ @custom-elements-manifest/analyzer is listed by your project with version 0.9.8 (pd8696), which doesn't satisfy what cem-plugin-module-file-extensions requests (~0.4.0 || ~0.5.0). -➤ YN0060: │ @storybook/blocks is listed by your project with version 8.6.14 (p97b82), which doesn't satisfy what @geometricpanda/storybook-addon-badges and other dependencies request (but they have non-overlapping ranges!). -➤ YN0060: │ @storybook/manager-api is listed by your project with version 8.6.14 (p0589a), which doesn't satisfy what @geometricpanda/storybook-addon-badges requests (^7.0.0). -➤ YN0060: │ @storybook/theming is listed by your project with version 8.6.14 (padafd), which doesn't satisfy what @geometricpanda/storybook-addon-badges and other dependencies request (but they have non-overlapping ranges!). -➤ YN0060: │ @storybook/types is listed by your project with version 8.6.12 (p5feaf), which doesn't satisfy what @geometricpanda/storybook-addon-badges requests (^7.0.0). -➤ YN0060: │ rollup is listed by your project with version 4.17.2 (p07e62), which doesn't satisfy what @open-wc/building-rollup and other dependencies request (but they have non-overlapping ranges!). -➤ YN0060: │ rollup is listed by your project with version 4.17.2 (p3469f), which doesn't satisfy what @open-wc/building-rollup and other dependencies request (but they have non-overlapping ranges!). -➤ YN0060: │ storybook is listed by your project with version 8.6.12 (p634f0), which doesn't satisfy what @storybook/blocks and other dependencies request (^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14 || ^8.6.14). -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide @storybook/components (p62e48), requested by @geometricpanda/storybook-addon-badges and other dependencies. -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide @storybook/core-events (p55938), requested by @geometricpanda/storybook-addon-badges. -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide @storybook/preview-api (p950b8), requested by @geometricpanda/storybook-addon-badges. -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide mocha (p27351), requested by mocha-junit-reporter. -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide react (pc298e), requested by @geometricpanda/storybook-addon-badges and other dependencies. -➤ YN0002: │ @adobe/spectrum-web-components@workspace:1st-gen doesn't provide react-dom (pbf6f5), requested by @geometricpanda/storybook-addon-badges and other dependencies. -➤ YN0002: │ @spectrum-web-components/custom-vars-viewer@workspace:1st-gen/projects/css-custom-vars-viewer doesn't provide @storybook/preview-api (pdc25e), requested by @spectrum-web-components/story-decorator. -➤ YN0002: │ @spectrum-web-components/custom-vars-viewer@workspace:1st-gen/projects/css-custom-vars-viewer doesn't provide eslint (peeaff), requested by @open-wc/eslint-config and other dependencies. -➤ YN0002: │ documentation@workspace:1st-gen/projects/documentation doesn't provide @types/markdown-it (pf1d9b), requested by markdown-it-anchor. -➤ YN0002: │ documentation@workspace:1st-gen/projects/documentation doesn't provide esbuild (pf99ba), requested by esbuild-plugin-lit-css. -➤ YN0002: │ documentation@workspace:1st-gen/projects/documentation doesn't provide lit (p1b327), requested by esbuild-plugin-lit-css. -➤ YN0086: │ Some peer dependencies are incorrectly met by your project; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code. -➤ YN0086: │ Some peer dependencies are incorrectly met by dependencies; run yarn explain peer-requirements for details. -➤ YN0000: └ Completed -➤ YN0000: ┌ Fetch step -➤ YN0000: └ Completed in 0s 800ms -➤ YN0000: ┌ Link step -➤ YN0000: └ Completed in 0s 366ms -➤ YN0000: · Done with warnings in 1s 474ms diff --git a/eslint.config.js b/eslint.config.js index 21df5e06cd3..9e8d3d58f60 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -283,6 +283,8 @@ export default defineConfig([ 'attr', // Attribute shorthand 'attribute', // Attribute documentation 'internal', // Internal member marker + 'status', // Component maturity status (preview, early-access, deprecated) + 'since', // Version when the component was introduced ], }, ], @@ -410,6 +412,7 @@ export default defineConfig([ 'scripts/**/*', '**/scripts/**/*.js', '**/scripts/**/*.ts', + '**/scripts/**/*.mjs', 'linters/**/*.js', '.github/**/*.js', '1st-gen/test/visual/**/*.js', @@ -530,7 +533,12 @@ export default defineConfig([ // Scripts: allow console.log and devDependencies imports // ──────────────────────────────────────────────────────────────────────────── { - files: ['**/scripts/**/*.js', '**/scripts/**/*.ts', 'scripts/**/*'], + files: [ + '**/scripts/**/*.js', + '**/scripts/**/*.ts', + '**/scripts/**/*.mjs', + 'scripts/**/*', + ], rules: { 'no-console': 'off', 'import/no-extraneous-dependencies': 'off', diff --git a/package.json b/package.json index 5a1119bd60c..2571a292f33 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "test:a11y:2nd": "playwright test --config=playwright.a11y.2ndgen.config.ts", "test:a11y:report": "playwright show-report 2nd-gen/test/playwright-a11y/report", "test:a11y:ui": "playwright test --config=playwright.a11y.config.ts --ui", + "generate:llms": "node scripts/generate-llms-txt.js", "tokens:test": "yarn workspace @adobe/swc-tokens test && yarn workspace @adobe/postcss-token test && yarn workspace swc-vscode-token test", "tokens:update": "yarn tokens:test && yarn workspace swc-vscode-token tokens && yarn workspace @adobe/spectrum-wc stylesheet:tokens && yarn workspace @adobe/spectrum-wc stylesheet:typography" }, diff --git a/scripts/generate-llms-txt.js b/scripts/generate-llms-txt.js new file mode 100644 index 00000000000..2ef051bf277 --- /dev/null +++ b/scripts/generate-llms-txt.js @@ -0,0 +1,775 @@ +/** + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +/** + * Generates llms.txt, llms-full.txt, sitemap.xml, and per-component reference/*.md files + * for Spectrum Web Components, following the llmstxt.org convention and + * aligning with https://react-spectrum.adobe.com/llms.txt. + * + * Data sources: + * - 1st-gen/projects/documentation/custom-elements.json (1st-gen APIs) + * - 2nd-gen/packages/swc/.storybook/custom-elements.json (2nd-gen APIs) + * - 1st-gen/packages/[name]/README.md (1st-gen descriptions) + * - 1st-gen/projects/documentation/content/*.md (1st-gen guide pages, Eleventy frontmatter) + * - 2nd-gen/packages/swc/.storybook/{guides,learn-about-swc}/**\/*.mdx (2nd-gen guides) + * + * Output per generation: + * - llms.txt Link index (guides + components -> reference/[tag].md) + * - llms-full.txt All components inlined in one file (single-context dump) + * - sitemap.xml All documentation URLs for search and AI crawlers + * - reference/[tag].md Per-component API reference (mirroring React Spectrum) + * + * Run: node scripts/generate-llms-txt.js + */ + +import { + existsSync, + mkdirSync, + readdirSync, + readFileSync, + writeFileSync, +} from 'fs'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +/** + * Render a markdown table from headers and rows. + * + * @param {string[]} headers + * @param {string[][]} rows + * @returns {string} + */ +function mdTable(headers, rows) { + const cols = headers.length; + const widths = Array.from({ length: cols }, (_, i) => + Math.max(headers[i].length, ...rows.map((r) => (r[i] ?? '').length)) + ); + + const pad = (str, w) => (str ?? '').padEnd(w); + const sep = widths.map((w) => '-'.repeat(w)).join(' | '); + const headerLine = headers.map((h, i) => pad(h, widths[i])).join(' | '); + const bodyLines = rows.map((row) => + row.map((cell, i) => pad(cell, widths[i])).join(' | ') + ); + + return [ + '| ' + headerLine + ' |', + '| ' + sep + ' |', + ...bodyLines.map((l) => '| ' + l + ' |'), + ].join('\n'); +} +const ROOT = join(__dirname, '..'); + +/** + * Where each generation's files land so they're served at the right URL. + * + * 1st-gen: content/ is Eleventy's input dir; files are passthrough-copied to + * _site/ then Rollup copies them into dist/, which GitHub Pages serves + * at https://opensource.adobe.com/spectrum-web-components/ + * + * 2nd-gen: public/ is Storybook's staticDirs root (see .storybook/main.ts), + * copied verbatim into storybook-static/ at build time. + */ +const FIRST_GEN_OUT = join(ROOT, '1st-gen/projects/documentation/content'); +const SECOND_GEN_OUT = join(ROOT, '2nd-gen/packages/swc/public'); +const SECOND_GEN_CEM = join( + ROOT, + '2nd-gen/packages/swc/.storybook/custom-elements.json' +); + +const FIRST_GEN_URL = 'https://opensource.adobe.com/spectrum-web-components'; +// TODO: 2nd-gen has no stable production URL yet; update once one is established. +const SECOND_GEN_URL = + 'https://opensource.adobe.com/spectrum-web-components/second-gen'; + +/** + * Elements defined in helper/internal packages that should not appear in the + * public-facing component reference. + */ +const EXCLUDED_TAGS = new Set([ + 'sp-css-table', + 'sp-story-decorator', + 'sp-grid', + 'sp-truncated', + 'sp-tooltip-openable', +]); + +// --------------------------------------------------------------------------- +// Data extraction +// --------------------------------------------------------------------------- + +/** + * Read and parse a Custom Elements Manifest JSON file. + * Distinguishes between a missing file (likely means docs:analyze hasn't run) + * and a parse error (corrupt output) so callers can give a useful error message. + */ +function readCem(cemPath) { + if (!existsSync(cemPath)) { + return { modules: [], missing: true }; + } + try { + return JSON.parse(readFileSync(cemPath, 'utf8')); + } catch (err) { + console.error(`Error: could not parse CEM at ${cemPath}: ${err.message}`); + process.exit(1); + } +} + +/** + * Parses the first meaningful sentence from a 1st-gen README's ## Overview + * section to use as the component description. + */ +function readmeDescription(packageName) { + const readmePath = join(ROOT, '1st-gen/packages', packageName, 'README.md'); + if (!existsSync(readmePath)) { + return ''; + } + try { + const content = readFileSync(readmePath, 'utf8'); + const match = content.match(/## Overview\s*\r?\n\r?\n([^#]+)/); + if (!match) { + return ''; + } + // Process in the right order to avoid losing element-name context: + // 1. Remove fenced code blocks + // 2. Replace inline code (`<sp-foo>`) with its text content - before HTML handling + // 3. Keep custom element names as plain text (drop only angle brackets) + // 4. Strip markdown links, keeping link text + // 5. Collapse whitespace + const raw = match[1] + .replace(/```[\s\S]*?```/g, '') + .replace(/`([^`]*)`/g, '$1') + .replace(/<\/[^>]+>/g, '') + .replace(/<([a-z][a-z0-9-]*)(?:\s[^>]*)?\s*\/?>/gi, '$1 ') + .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + .replace(/\s+/g, ' ') + .trim(); + // Take up to the first sentence boundary, but don't split on abbreviations + // like "e.g.", "i.e.", "etc." or version strings like "2.0". + const sentence = + raw.match(/^.*?[.!?](?:\s|$)(?!(?:g|e|i)\.)(?!\d)/)?.[0]?.trim() ?? + raw.slice(0, 160); + return sentence.trim(); + } catch { + return ''; + } +} + +/** + * Derive the npm package directory name from a 1st-gen CEM module path. + * Pattern: packages/[name]/src/ComponentName.js + */ +function packageNameFromPath(modulePath) { + const match = modulePath?.match(/^packages\/([^/]+)\//); + return match ? match[1] : null; +} + +/** + * Derive the component directory name for 2nd-gen imports. + * Pattern: 2nd-gen/packages/swc/components/[name]/ComponentName.ts + */ +function secondGenComponentFromPath(modulePath) { + const match = modulePath?.match(/components\/([^/]+)\//); + return match ? match[1] : null; +} + +/** + * Normalize a description string: flatten newlines, collapse whitespace, + * truncate at a sentence boundary (<=200 chars). + */ +function normalizeDesc(text) { + if (!text) { + return ''; + } + const flat = text.replace(/\s+/g, ' ').trim(); + if (flat.length <= 200) { + return flat; + } + const truncated = flat.slice(0, 200); + const sentenceEnd = truncated.search(/[.!?][^.!?]*$/); + if (sentenceEnd > 40) { + return truncated.slice(0, sentenceEnd + 1).trim(); + } + const wordEnd = truncated.lastIndexOf(' '); + return (wordEnd > 40 ? truncated.slice(0, wordEnd) : truncated) + '...'; +} + +function buildComponent(decl, modulePath, gen) { + const packageDir = + gen === 1 + ? packageNameFromPath(modulePath) + : secondGenComponentFromPath(modulePath); + + const npmPackage = + gen === 1 + ? packageDir + ? `@spectrum-web-components/${packageDir}` + : null + : '@adobe/spectrum-wc'; + + const importPath = + gen === 1 + ? npmPackage + ? `${npmPackage}/${decl.tagName}.js` + : null + : packageDir + ? `@adobe/spectrum-wc/components/${packageDir}/index.js` + : null; + + const description = + normalizeDesc(decl.description) || + (gen === 1 && packageDir ? readmeDescription(packageDir) : ''); + + const attributes = (decl.attributes ?? []) + .filter((a) => !a.name.startsWith('_')) + .map((a) => ({ + name: a.name, + type: a.type?.text ?? '', + description: normalizeDesc(a.description), + default: a.default ?? '', + })); + + const slots = (decl.slots ?? []).map((s) => ({ + name: s.name || '(default)', + description: normalizeDesc(s.description), + })); + + const events = (decl.events ?? []).map((eventItem) => ({ + name: eventItem.name, + description: normalizeDesc(eventItem.description), + })); + + const cssProperties = (decl.cssProperties ?? []).map((p) => ({ + name: p.name, + description: normalizeDesc(p.description), + })); + + return { + tagName: decl.tagName, + packageDir, + npmPackage, + importPath, + description, + attributes, + slots, + events, + cssProperties, + }; +} + +function extractComponents(cem, gen) { + const prefix = gen === 1 ? 'sp-' : 'swc-'; + const seen = new Set(); + const components = []; + + for (const mod of cem.modules) { + for (const decl of mod.declarations ?? []) { + if ( + decl.customElement && + decl.tagName?.startsWith(prefix) && + !EXCLUDED_TAGS.has(decl.tagName) && + !seen.has(decl.tagName) + ) { + seen.add(decl.tagName); + components.push(buildComponent(decl, mod.path, gen)); + } + } + } + + return components.sort((a, b) => a.tagName.localeCompare(b.tagName)); +} + +/** + * Read Eleventy frontmatter from a markdown file and return { title, slug } or null. + */ +function parseEleventyFrontmatter(filePath) { + try { + const content = readFileSync(filePath, 'utf8'); + const slug = content.match(/^slug:\s*(.+)$/m)?.[1]?.trim(); + const displayName = content.match(/^displayName:\s*(.+)$/m)?.[1]?.trim(); + if (slug && displayName) { + return { slug, title: displayName }; + } + } catch { + // ignore unreadable files + } + return null; +} + +/** + * Returns guide entries for 1st-gen from Eleventy content directory. + * Each entry: { title, url, section } + * section 'guides' top-level pages (getting-started, etc.) + * section 'developer-guides' content/guides/ subdirectory + */ +function readFirstGenGuides() { + const contentDir = FIRST_GEN_OUT; + const guides = []; + + // Top-level .md pages (skip index.md — that's the homepage) + for (const file of readdirSync(contentDir)) { + if (!file.endsWith('.md') || file === 'index.md') { + continue; + } + const meta = parseEleventyFrontmatter(join(contentDir, file)); + if (meta) { + guides.push({ + title: meta.title, + url: `${FIRST_GEN_URL}/${meta.slug}/`, + section: 'guides', + }); + } + } + + // guides/ subdirectory + const guidesDir = join(contentDir, 'guides'); + if (existsSync(guidesDir)) { + for (const file of readdirSync(guidesDir)) { + if (!file.endsWith('.md')) { + continue; + } + const meta = parseEleventyFrontmatter(join(guidesDir, file)); + if (meta) { + guides.push({ + title: meta.title, + url: `${FIRST_GEN_URL}/guides/${meta.slug}/`, + section: 'developer-guides', + }); + } + } + } + + // Sort each section alphabetically by title + return guides.sort((a, b) => + a.section !== b.section + ? a.section.localeCompare(b.section) + : a.title.localeCompare(b.title) + ); +} + +/** + * Convert a Storybook story title (titlePrefix + MDX Meta title) to a story ID + * matching Storybook's own slug algorithm: lowercase, spaces -> hyphens, / -> hyphen. + */ +function storybookStoryId(titlePrefix, metaTitle) { + return `${titlePrefix}/${metaTitle}` + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/\//g, '-'); +} + +/** + * Recursively collect .mdx file paths under a directory. + */ +function collectMdxFiles(dir) { + const results = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + if (entry.isDirectory()) { + results.push(...collectMdxFiles(join(dir, entry.name))); + } else if (entry.name.endsWith('.mdx')) { + results.push(join(dir, entry.name)); + } + } + return results; +} + +/** + * Returns guide entries for 2nd-gen from Storybook MDX files. + * Each entry: { title, url, section } + * section 'learn' learn-about-swc/ directory + * section 'guides' guides/ directory + */ +function readSecondGenGuides() { + const storybookDir = join(ROOT, '2nd-gen/packages/swc/.storybook'); + const guides = []; + + // learn-about-swc/*.mdx (titlePrefix: 'Learn about SWC') + const learnDir = join(storybookDir, 'learn-about-swc'); + if (existsSync(learnDir)) { + for (const file of readdirSync(learnDir)) { + if (!file.endsWith('.mdx')) { + continue; + } + const content = readFileSync(join(learnDir, file), 'utf8'); + const metaTitle = content.match(/<Meta\s+title="([^"]+)"/)?.[1]; + if (metaTitle) { + const storyId = storybookStoryId('Learn about SWC', metaTitle); + guides.push({ + title: metaTitle, + url: `${SECOND_GEN_URL}/?path=/docs/${storyId}--docs`, + section: 'learn', + }); + } + } + } + + // guides/**/*.mdx (titlePrefix: 'Guides') + const guidesDir = join(storybookDir, 'guides'); + if (existsSync(guidesDir)) { + for (const filePath of collectMdxFiles(guidesDir)) { + const content = readFileSync(filePath, 'utf8'); + const metaTitle = content.match(/<Meta\s+title="([^"]+)"/)?.[1]; + if (metaTitle) { + const storyId = storybookStoryId('Guides', metaTitle); + guides.push({ + title: metaTitle, + url: `${SECOND_GEN_URL}/?path=/docs/${storyId}--docs`, + section: 'guides', + }); + } + } + } + + return guides.sort((a, b) => + a.section !== b.section + ? a.section.localeCompare(b.section) + : a.title.localeCompare(b.title) + ); +} + +// --------------------------------------------------------------------------- +// Formatters +// --------------------------------------------------------------------------- + +/** + * One index line for llms.txt, matching React Spectrum's format: + * - [sp-badge](reference/sp-badge.md): Description. + */ +function indexLine(comp) { + const desc = comp.description ? `: ${comp.description}` : ''; + return `- [${comp.tagName}](reference/${comp.tagName}.md)${desc}`; +} + +/** + * Full per-component markdown file, mirroring React Spectrum's Badge.md style. + */ +function componentMd(comp) { + const lines = [`# ${comp.tagName}`, '']; + + if (comp.description) { + lines.push(comp.description, ''); + } + + if (comp.importPath) { + lines.push('```js'); + if (comp.npmPackage) { + lines.push(`import '${comp.importPath}';`); + } + lines.push(`// <${comp.tagName}></${comp.tagName}>`, '```', ''); + } + + if (comp.attributes.length > 0) { + lines.push('## Attributes', ''); + lines.push( + mdTable( + ['Name', 'Type', 'Default', 'Description'], + comp.attributes.map((a) => [ + `\`${a.name}\``, + a.type ? `\`${a.type}\`` : '', + a.default ? `\`${a.default}\`` : '-', + a.description || '', + ]) + ), + '' + ); + } + + if (comp.slots.length > 0) { + lines.push('## Slots', ''); + lines.push( + mdTable( + ['Name', 'Description'], + comp.slots.map((s) => [`\`${s.name}\``, s.description || '']) + ), + '' + ); + } + + if (comp.events.length > 0) { + lines.push('## Events', ''); + lines.push( + mdTable( + ['Name', 'Description'], + comp.events.map((eventItem) => [ + `\`${eventItem.name}\``, + eventItem.description || '', + ]) + ), + '' + ); + } + + if (comp.cssProperties.length > 0) { + lines.push('## CSS Custom Properties', ''); + lines.push( + mdTable( + ['Name', 'Description'], + comp.cssProperties.map((p) => [`\`${p.name}\``, p.description || '']) + ), + '' + ); + } + + return lines.join('\n'); +} + +/** + * Full inlined reference (all components in one file) for tools that want + * a single large context dump rather than following per-component links. + */ +function fullEntry(comp) { + // Reuse componentMd but wrap in an H2 section for the combined file + return componentMd(comp).replace(/^# /, '## '); +} + +// --------------------------------------------------------------------------- +// Document generators +// --------------------------------------------------------------------------- + +/** + * Append a guide section to a lines array if any guides match the given section key. + */ +function appendGuideSection(lines, guides, sectionKey, heading) { + const filtered = guides.filter((g) => g.section === sectionKey); + if (filtered.length > 0) { + lines.push( + '', + `## ${heading}`, + '', + ...filtered.map((g) => `- [${g.title}](${g.url})`) + ); + } +} + +function generateLlmsTxt({ components, guides, gen, docsUrl, crossLink }) { + const is1st = gen === 1; + const prefix = is1st ? 'sp-' : 'swc-'; + const spectrumVersion = is1st ? 'Spectrum 1' : 'Spectrum 2'; + + const lines = [ + '# Spectrum Web Components', + '', + is1st + ? `> Adobe's Spectrum 1 web component library. \`${prefix}*\` elements (${spectrumVersion}).` + : `> Adobe's Spectrum 2 web component library (in active development). \`${prefix}*\` elements (${spectrumVersion}).`, + '', + '## Resources', + '', + `- [Documentation](${docsUrl}): Full docs with live examples`, + '- [GitHub](https://github.com/adobe/spectrum-web-components): Source code and issues', + is1st + ? '- [npm](https://www.npmjs.com/search?q=%40spectrum-web-components): All 1st-gen packages' + : '- [npm (@adobe/spectrum-wc)](https://www.npmjs.com/package/@adobe/spectrum-wc): Package', + `- [llms-full.txt](${docsUrl}/llms-full.txt): All ${spectrumVersion} component APIs in one file`, + ]; + + if (crossLink) { + lines.push(`- [${crossLink.label}](${crossLink.url}): ${crossLink.desc}`); + } + + if (is1st) { + appendGuideSection(lines, guides, 'guides', 'Guides'); + appendGuideSection(lines, guides, 'developer-guides', 'Developer guides'); + } else { + appendGuideSection(lines, guides, 'learn', 'Learn about SWC'); + appendGuideSection(lines, guides, 'guides', 'Guides'); + } + + lines.push('', '## Components', '', ...components.map(indexLine)); + + return lines.join('\n') + '\n'; +} + +function generateLlmsFullTxt({ components, gen, docsUrl, now }) { + const is1st = gen === 1; + const spectrumVersion = is1st ? 'Spectrum 1' : 'Spectrum 2'; + const prefix = is1st ? 'sp-' : 'swc-'; + + const lines = [ + `# Spectrum Web Components - ${spectrumVersion} Full API Reference`, + '', + `> Generated ${now}. For the link index see [llms.txt](${docsUrl}/llms.txt).`, + '', + `All public \`${prefix}*\` components with their full attribute, slot, event, and CSS`, + 'custom property tables. Useful when you want the entire API in one context window.', + '', + is1st + ? 'Each component is a separate package: `yarn add @spectrum-web-components/[name]`' + : 'All components ship together: `yarn add @adobe/spectrum-wc`', + '', + '---', + '', + ...components.map((c) => fullEntry(c) + '\n---'), + ]; + + return lines.join('\n') + '\n'; +} + +/** + * XML sitemap listing all doc URLs for this generation. + * 1st-gen links to HTML pages; 2nd-gen links to Storybook SPA routes. + */ +function generateSitemap({ components, guides, gen, docsUrl, now }) { + const entry = (loc, priority, changefreq) => + ` <url>\n <loc>${loc}</loc>\n <changefreq>${changefreq}</changefreq>\n <priority>${priority}</priority>\n </url>`; + + const entries = [ + // Root + entry(`${docsUrl}/`, '1.0', 'weekly'), + ]; + + // Guide pages + for (const guide of guides) { + entries.push(entry(guide.url, '0.8', 'monthly')); + } + + // Component pages + for (const comp of components) { + if (gen === 1 && comp.packageDir) { + // 1st-gen component docs are HTML pages at /components/[dir]/ + entries.push( + entry(`${docsUrl}/components/${comp.packageDir}/`, '0.7', 'monthly') + ); + } else if (gen === 2) { + // 2nd-gen: reference markdown files served from Storybook's staticDirs + entries.push( + entry(`${docsUrl}/reference/${comp.tagName}.md`, '0.7', 'monthly') + ); + } + } + + return ( + `<?xml version="1.0" encoding="UTF-8"?>\n` + + `<!-- Generated ${now} -->\n` + + `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n` + + entries.join('\n') + + `\n</urlset>\n` + ); +} + +// --------------------------------------------------------------------------- +// Entry point +// --------------------------------------------------------------------------- + +function writeGen({ components, guides, gen, outDir, docsUrl, crossLink }) { + const genLabel = gen === 1 ? '1st' : '2nd'; + const now = new Date().toISOString().slice(0, 10); + const refDir = join(outDir, 'reference'); + mkdirSync(refDir, { recursive: true }); + + writeFileSync( + join(outDir, 'llms.txt'), + generateLlmsTxt({ components, guides, gen, docsUrl, crossLink }), + 'utf8' + ); + + writeFileSync( + join(outDir, 'llms-full.txt'), + generateLlmsFullTxt({ components, gen, docsUrl, now }), + 'utf8' + ); + + writeFileSync( + join(outDir, 'sitemap.xml'), + generateSitemap({ components, guides, gen, docsUrl, now }), + 'utf8' + ); + + for (const comp of components) { + writeFileSync( + join(refDir, `${comp.tagName}.md`), + componentMd(comp), + 'utf8' + ); + } + + console.log( + `${genLabel}-gen: llms.txt + llms-full.txt + sitemap.xml + ${components.length} reference/*.md -> ${outDir}` + ); +} + +function main() { + console.log('Reading Custom Elements Manifests...'); + + const firstGenCem = readCem( + join(ROOT, '1st-gen/projects/documentation/custom-elements.json') + ); + const secondGenCem = readCem(SECOND_GEN_CEM); + + const firstGen = extractComponents(firstGenCem, 1); + const secondGen = extractComponents(secondGenCem, 2); + + console.log(` 1st-gen: ${firstGen.length} components`); + console.log(` 2nd-gen: ${secondGen.length} components`); + + if (firstGenCem.missing) { + console.warn( + 'Warning: 1st-gen CEM not found; skipping 1st-gen output. Run `yarn docs:analyze` first.' + ); + } else if (firstGen.length === 0) { + console.error( + 'Error: 1st-gen CEM found but yielded 0 components. The manifest may be malformed.' + ); + process.exit(1); + } + + if (secondGenCem.missing) { + console.warn( + 'Warning: 2nd-gen CEM not found; skipping 2nd-gen output. Run `yarn analyze` first.' + ); + } else if (secondGen.length === 0) { + console.error( + 'Error: 2nd-gen CEM found but yielded 0 components. The manifest may be malformed.' + ); + process.exit(1); + } + + console.log('Reading guide metadata...'); + const firstGenGuides = readFirstGenGuides(); + const secondGenGuides = readSecondGenGuides(); + console.log(` 1st-gen: ${firstGenGuides.length} guides`); + console.log(` 2nd-gen: ${secondGenGuides.length} guides`); + + if (!firstGenCem.missing) { + writeGen({ + components: firstGen, + guides: firstGenGuides, + gen: 1, + outDir: FIRST_GEN_OUT, + docsUrl: FIRST_GEN_URL, + crossLink: { + label: '2nd-gen llms.txt', + url: `${SECOND_GEN_URL}/llms.txt`, + desc: 'Spectrum 2 (swc-*) component index', + }, + }); + } + + if (!secondGenCem.missing) { + writeGen({ + components: secondGen, + guides: secondGenGuides, + gen: 2, + outDir: SECOND_GEN_OUT, + docsUrl: SECOND_GEN_URL, + crossLink: { + label: '1st-gen llms.txt', + url: `${FIRST_GEN_URL}/llms.txt`, + desc: 'Spectrum 1 (sp-*) component index', + }, + }); + } +} + +main(); diff --git a/yarn.lock b/yarn.lock index 5675fe6bed7..70426cb34a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6111,7 +6111,6 @@ __metadata: dependencies: "@spectrum-web-components/base": "npm:1.11.2" "@spectrum-web-components/button": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" "@spectrum-web-components/icons-workflow": "npm:1.11.2" languageName: unknown linkType: soft @@ -6135,7 +6134,6 @@ __metadata: resolution: "@spectrum-web-components/asset@workspace:1st-gen/packages/asset" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" languageName: unknown linkType: soft @@ -6153,7 +6151,6 @@ __metadata: resolution: "@spectrum-web-components/badge@workspace:1st-gen/packages/badge" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" "@spectrum-web-components/shared": "npm:1.11.2" languageName: unknown linkType: soft @@ -6162,7 +6159,6 @@ __metadata: version: 0.0.0-use.local resolution: "@spectrum-web-components/base@workspace:1st-gen/tools/base" dependencies: - "@spectrum-web-components/core": "npm:0.0.4" lit: "npm:^2.5.0 || ^3.1.3" languageName: unknown linkType: soft @@ -6517,7 +6513,6 @@ __metadata: resolution: "@spectrum-web-components/divider@workspace:1st-gen/packages/divider" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" languageName: unknown linkType: soft @@ -6796,7 +6791,7 @@ __metadata: resolution: "@spectrum-web-components/progress-circle@workspace:1st-gen/packages/progress-circle" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" + "@spectrum-web-components/reactive-controllers": "npm:1.11.2" "@spectrum-web-components/shared": "npm:1.11.2" languageName: unknown linkType: soft @@ -6817,7 +6812,6 @@ __metadata: version: 0.0.0-use.local resolution: "@spectrum-web-components/reactive-controllers@workspace:1st-gen/tools/reactive-controllers" dependencies: - "@spectrum-web-components/core": "npm:0.0.4" "@spectrum-web-components/progress-circle": "npm:1.11.2" colorjs.io: "npm:0.5.2" lit: "npm:^2.5.0 || ^3.1.3" @@ -6842,7 +6836,6 @@ __metadata: dependencies: "@lit-labs/observers": "npm:2.0.2" "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" focus-visible: "npm:5.2.1" languageName: unknown linkType: soft @@ -6886,7 +6879,6 @@ __metadata: resolution: "@spectrum-web-components/status-light@workspace:1st-gen/packages/status-light" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" languageName: unknown linkType: soft @@ -6994,7 +6986,9 @@ __metadata: "@spectrum-web-components/icon": "npm:1.11.2" "@spectrum-web-components/icons-ui": "npm:1.11.2" "@spectrum-web-components/icons-workflow": "npm:1.11.2" + "@spectrum-web-components/overlay": "npm:1.11.2" "@spectrum-web-components/shared": "npm:1.11.2" + "@spectrum-web-components/tooltip": "npm:1.11.2" languageName: unknown linkType: soft @@ -7003,7 +6997,6 @@ __metadata: resolution: "@spectrum-web-components/theme@workspace:1st-gen/tools/theme" dependencies: "@spectrum-web-components/base": "npm:1.11.2" - "@spectrum-web-components/core": "npm:0.0.4" "@spectrum-web-components/styles": "npm:1.11.2" languageName: unknown linkType: soft