{"id":24758,"date":"2026-08-28T02:42:34","date_gmt":"2026-08-28T02:42:34","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24758"},"modified":"2026-08-28T02:42:37","modified_gmt":"2026-08-28T02:42:37","slug":"slider-guide-rail-contact-pressure-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/fr\/slider-guide-rail-contact-pressure-calculator\/","title":{"rendered":"Slider \/ Guide Rail Contact Pressure Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Slider \/ Guide Rail Contact Pressure Calculator<\/strong> is a practical engineering tool designed to calculate contact pressure between sliders, guide rails, wear plates, and machine slideways under applied loads. By entering contact dimensions, load, material properties, and safety factors, users can quickly evaluate effective contact area, allowable pressure, load utilization, and design safety. The Slider \/ Guide Rail Contact Pressure Calculator helps engineers optimize guide systems, reduce excessive wear and surface damage, and improve the reliability of machine tools, automation equipment, and industrial machinery.<\/p>\n\n\n\n<!-- WordPress Custom HTML Block: copy ALL content below -->\n<!-- Do NOT wrap in DOCTYPE\/html\/head\/body. Use Code Editor mode. -->\n<!-- Styles and scripts are scoped to #slider-guide-pressure-calculator only. -->\n<style>\n\/* Slider \/ Guide Rail Contact Pressure Calculator \u2014 WordPress-safe scoped styles\n * MUST NOT affect theme header, footer, navigation, or any content\n * outside #slider-guide-pressure-calculator. No html\/body\/universal selectors.\n * Paste wordpress-embed.html into a Custom HTML block (Code Editor).\n *\/\n\n.entry-content #slider-guide-pressure-calculator,\n.wp-block-html #slider-guide-pressure-calculator,\n.wp-block-custom-html #slider-guide-pressure-calculator,\n.elementor-widget-container #slider-guide-pressure-calculator,\n#slider-guide-pressure-calculator {\n    all: revert;\n    --sgcpc-primary: #1e40af;\n    --sgcpc-primary-light: #3b82f6;\n    --sgcpc-primary-dark: #1e3a8a;\n    --sgcpc-success: #16a34a;\n    --sgcpc-warning: #d97706;\n    --sgcpc-danger: #dc2626;\n    --sgcpc-card-bg: #ffffff;\n    --sgcpc-text: #1e293b;\n    --sgcpc-text-muted: #64748b;\n    --sgcpc-border: #e2e8f0;\n    --sgcpc-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);\n    --sgcpc-radius: 10px;\n    --sgcpc-font: 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n\n    box-sizing: border-box !important;\n    display: block !important;\n    isolation: isolate !important;\n    contain: layout style !important;\n    float: none !important;\n    clear: both !important;\n    position: relative !important;\n    z-index: auto !important;\n    overflow: visible !important;\n    font-family: var(--sgcpc-font) !important;\n    font-size: 16px !important;\n    font-weight: 400 !important;\n    line-height: 1.6 !important;\n    color: var(--sgcpc-text) !important;\n    width: 100% !important;\n    max-width: 100% !important;\n    background: transparent !important;\n    text-align: left !important;\n    letter-spacing: normal !important;\n    text-transform: none !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.entry-content #slider-guide-pressure-calculator *,\n.entry-content #slider-guide-pressure-calculator *::before,\n.entry-content #slider-guide-pressure-calculator *::after,\n.wp-block-html #slider-guide-pressure-calculator *,\n.wp-block-html #slider-guide-pressure-calculator *::before,\n.wp-block-html #slider-guide-pressure-calculator *::after,\n.wp-block-custom-html #slider-guide-pressure-calculator *,\n.wp-block-custom-html #slider-guide-pressure-calculator *::before,\n.wp-block-custom-html #slider-guide-pressure-calculator *::after,\n.elementor-widget-container #slider-guide-pressure-calculator *,\n.elementor-widget-container #slider-guide-pressure-calculator *::before,\n.elementor-widget-container #slider-guide-pressure-calculator *::after,\n#slider-guide-pressure-calculator *,\n#slider-guide-pressure-calculator *::before,\n#slider-guide-pressure-calculator *::after {\n    box-sizing: border-box !important;\n}\n\n.entry-content #slider-guide-pressure-calculator section,\n.entry-content #slider-guide-pressure-calculator h1,\n.entry-content #slider-guide-pressure-calculator h2,\n.entry-content #slider-guide-pressure-calculator h3,\n.entry-content #slider-guide-pressure-calculator h4,\n.entry-content #slider-guide-pressure-calculator p,\n.entry-content #slider-guide-pressure-calculator ul,\n.entry-content #slider-guide-pressure-calculator ol,\n.entry-content #slider-guide-pressure-calculator li,\n.entry-content #slider-guide-pressure-calculator div,\n.entry-content #slider-guide-pressure-calculator span,\n.entry-content #slider-guide-pressure-calculator strong,\n.entry-content #slider-guide-pressure-calculator em,\n.entry-content #slider-guide-pressure-calculator svg,\n.wp-block-html #slider-guide-pressure-calculator section,\n.wp-block-html #slider-guide-pressure-calculator h1,\n.wp-block-html #slider-guide-pressure-calculator h2,\n.wp-block-html #slider-guide-pressure-calculator h3,\n.wp-block-html #slider-guide-pressure-calculator h4,\n.wp-block-html #slider-guide-pressure-calculator p,\n.wp-block-html #slider-guide-pressure-calculator ul,\n.wp-block-html #slider-guide-pressure-calculator ol,\n.wp-block-html #slider-guide-pressure-calculator li,\n.wp-block-html #slider-guide-pressure-calculator div,\n.wp-block-html #slider-guide-pressure-calculator span,\n.wp-block-html #slider-guide-pressure-calculator strong,\n.wp-block-html #slider-guide-pressure-calculator em,\n.wp-block-html #slider-guide-pressure-calculator svg,\n.wp-block-custom-html #slider-guide-pressure-calculator section,\n.wp-block-custom-html #slider-guide-pressure-calculator h1,\n.wp-block-custom-html #slider-guide-pressure-calculator h2,\n.wp-block-custom-html #slider-guide-pressure-calculator h3,\n.wp-block-custom-html #slider-guide-pressure-calculator h4,\n.wp-block-custom-html #slider-guide-pressure-calculator p,\n.wp-block-custom-html #slider-guide-pressure-calculator ul,\n.wp-block-custom-html #slider-guide-pressure-calculator ol,\n.wp-block-custom-html #slider-guide-pressure-calculator li,\n.wp-block-custom-html #slider-guide-pressure-calculator div,\n.wp-block-custom-html #slider-guide-pressure-calculator span,\n.wp-block-custom-html #slider-guide-pressure-calculator strong,\n.wp-block-custom-html #slider-guide-pressure-calculator em,\n.wp-block-custom-html #slider-guide-pressure-calculator svg,\n.elementor-widget-container #slider-guide-pressure-calculator section,\n.elementor-widget-container #slider-guide-pressure-calculator h1,\n.elementor-widget-container #slider-guide-pressure-calculator h2,\n.elementor-widget-container #slider-guide-pressure-calculator h3,\n.elementor-widget-container #slider-guide-pressure-calculator h4,\n.elementor-widget-container #slider-guide-pressure-calculator p,\n.elementor-widget-container #slider-guide-pressure-calculator ul,\n.elementor-widget-container #slider-guide-pressure-calculator ol,\n.elementor-widget-container #slider-guide-pressure-calculator li,\n.elementor-widget-container #slider-guide-pressure-calculator div,\n.elementor-widget-container #slider-guide-pressure-calculator span,\n.elementor-widget-container #slider-guide-pressure-calculator strong,\n.elementor-widget-container #slider-guide-pressure-calculator em,\n.elementor-widget-container #slider-guide-pressure-calculator svg,\n#slider-guide-pressure-calculator section,\n#slider-guide-pressure-calculator h1,\n#slider-guide-pressure-calculator h2,\n#slider-guide-pressure-calculator h3,\n#slider-guide-pressure-calculator h4,\n#slider-guide-pressure-calculator p,\n#slider-guide-pressure-calculator ul,\n#slider-guide-pressure-calculator ol,\n#slider-guide-pressure-calculator li,\n#slider-guide-pressure-calculator div,\n#slider-guide-pressure-calculator span,\n#slider-guide-pressure-calculator strong,\n#slider-guide-pressure-calculator em,\n#slider-guide-pressure-calculator svg {\n    margin: 0 !important;\n    padding: 0 !important;\n    border: none !important;\n    background: none !important;\n    box-shadow: none !important;\n    float: none !important;\n    font-family: inherit !important;\n    line-height: inherit !important;\n    letter-spacing: normal !important;\n    text-transform: none !important;\n    text-decoration: none !important;\n}\n\n.entry-content #slider-guide-pressure-calculator button,\n.entry-content #slider-guide-pressure-calculator input,\n.entry-content #slider-guide-pressure-calculator select,\n.entry-content #slider-guide-pressure-calculator textarea,\n.entry-content #slider-guide-pressure-calculator label,\n.wp-block-html #slider-guide-pressure-calculator button,\n.wp-block-html #slider-guide-pressure-calculator input,\n.wp-block-html #slider-guide-pressure-calculator select,\n.wp-block-html #slider-guide-pressure-calculator textarea,\n.wp-block-html #slider-guide-pressure-calculator label,\n.wp-block-custom-html #slider-guide-pressure-calculator button,\n.wp-block-custom-html #slider-guide-pressure-calculator input,\n.wp-block-custom-html #slider-guide-pressure-calculator select,\n.wp-block-custom-html #slider-guide-pressure-calculator textarea,\n.wp-block-custom-html #slider-guide-pressure-calculator label,\n.elementor-widget-container #slider-guide-pressure-calculator button,\n.elementor-widget-container #slider-guide-pressure-calculator input,\n.elementor-widget-container #slider-guide-pressure-calculator select,\n.elementor-widget-container #slider-guide-pressure-calculator textarea,\n.elementor-widget-container #slider-guide-pressure-calculator label,\n#slider-guide-pressure-calculator button,\n#slider-guide-pressure-calculator input,\n#slider-guide-pressure-calculator select,\n#slider-guide-pressure-calculator textarea,\n#slider-guide-pressure-calculator label {\n    font: inherit !important;\n    color: inherit !important;\n    margin: 0 !important;\n    min-width: 0 !important;\n    max-width: none !important;\n    float: none !important;\n    letter-spacing: normal !important;\n    text-transform: none !important;\n}\n\n.entry-content #slider-guide-pressure-calculator svg,\n.wp-block-html #slider-guide-pressure-calculator svg,\n.wp-block-custom-html #slider-guide-pressure-calculator svg,\n.elementor-widget-container #slider-guide-pressure-calculator svg,\n#slider-guide-pressure-calculator svg {\n    display: inline-block !important;\n    vertical-align: middle !important;\n    overflow: visible !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-container {\n    max-width: 1140px !important;\n    margin: 0 auto !important;\n    padding: 0 !important;\n    width: 100% !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-intro {\n    margin-bottom: 1.25rem !important;\n    padding: 1.25rem 1.5rem !important;\n    background: linear-gradient(135deg, #eff6ff 0%, #f8fafc 100%) !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-left: 4px solid var(--sgcpc-primary) !important;\n    border-radius: var(--sgcpc-radius) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-intro h1 {\n    font-size: 1.45rem !important;\n    font-weight: 700 !important;\n    color: var(--sgcpc-primary-dark) !important;\n    margin-bottom: 0.65rem !important;\n    line-height: 1.3 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-intro p {\n    font-size: 0.92rem !important;\n    color: var(--sgcpc-text-muted) !important;\n    margin-bottom: 0.5rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-layout {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 1.25rem !important;\n    align-items: stretch !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-card {\n    background: var(--sgcpc-card-bg) !important;\n    border-radius: var(--sgcpc-radius) !important;\n    box-shadow: var(--sgcpc-shadow) !important;\n    padding: 1.5rem !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-top: 3px solid var(--sgcpc-primary) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-card h2 {\n    font-size: 1.15rem !important;\n    font-weight: 700 !important;\n    color: var(--sgcpc-primary-dark) !important;\n    margin-bottom: 1rem !important;\n    padding-bottom: 0.5rem !important;\n    border-bottom: 1px solid var(--sgcpc-border) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-subsection-title {\n    font-size: 0.82rem !important;\n    font-weight: 700 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.04em !important;\n    color: var(--sgcpc-text-muted) !important;\n    margin: 1rem 0 0.65rem 0 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-input-grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 0.85rem 1rem !important;\n}\n\n@media (max-width: 520px) {\n    #slider-guide-pressure-calculator .sgcpc-input-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n#slider-guide-pressure-calculator .sgcpc-form-group {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.35rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-full-width {\n    grid-column: 1 \/ -1 !important;\n}\n\n#slider-guide-pressure-calculator label {\n    font-size: 0.85rem !important;\n    font-weight: 600 !important;\n    color: var(--sgcpc-text) !important;\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.35rem !important;\n    flex-wrap: wrap !important;\n}\n\n#slider-guide-pressure-calculator input[type=\"number\"],\n#slider-guide-pressure-calculator input[type=\"text\"],\n#slider-guide-pressure-calculator select {\n    width: 100% !important;\n    padding: 0.55rem 0.65rem !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-radius: 6px !important;\n    font-size: 0.9rem !important;\n    font-family: inherit !important;\n    color: var(--sgcpc-text) !important;\n    background: #fff !important;\n    appearance: auto !important;\n}\n\n#slider-guide-pressure-calculator input.sgcpc-error {\n    border-color: var(--sgcpc-danger) !important;\n    background: #fef2f2 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-input-with-unit {\n    display: flex !important;\n    align-items: stretch !important;\n    gap: 0.4rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-input-with-unit input {\n    flex: 1 !important;\n    min-width: 0 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-input-with-unit select {\n    width: auto !important;\n    min-width: 4.5rem !important;\n    flex-shrink: 0 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-unit-label {\n    display: inline-flex !important;\n    align-items: center !important;\n    padding: 0 0.65rem !important;\n    background: #f1f5f9 !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-radius: 6px !important;\n    font-size: 0.82rem !important;\n    color: var(--sgcpc-text-muted) !important;\n    white-space: nowrap !important;\n    flex-shrink: 0 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-unit-toggle {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 0.75rem 1.25rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-radio-label {\n    display: inline-flex !important;\n    align-items: center !important;\n    gap: 0.4rem !important;\n    font-size: 0.88rem !important;\n    font-weight: 500 !important;\n    cursor: pointer !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-mode-note,\n#slider-guide-pressure-calculator .sgcpc-range-hint {\n    font-size: 0.8rem !important;\n    color: var(--sgcpc-text-muted) !important;\n    font-style: italic !important;\n    margin-top: 0.35rem !important;\n    grid-column: 1 \/ -1 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-tooltip {\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 16px !important;\n    height: 16px !important;\n    border-radius: 50% !important;\n    background: var(--sgcpc-text-muted) !important;\n    color: #fff !important;\n    font-size: 0.65rem !important;\n    font-weight: 700 !important;\n    cursor: help !important;\n    position: relative !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-tooltip::after {\n    content: attr(data-tip) !important;\n    position: absolute !important;\n    bottom: calc(100% + 6px) !important;\n    left: 50% !important;\n    transform: translateX(-50%) !important;\n    background: var(--sgcpc-text) !important;\n    color: #fff !important;\n    padding: 0.5rem 0.75rem !important;\n    border-radius: 6px !important;\n    font-size: 0.75rem !important;\n    font-weight: 400 !important;\n    white-space: normal !important;\n    width: max-content !important;\n    max-width: 260px !important;\n    opacity: 0 !important;\n    visibility: hidden !important;\n    z-index: 100 !important;\n    pointer-events: none !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-tooltip:hover::after {\n    opacity: 1 !important;\n    visibility: visible !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-error-msg {\n    font-size: 0.78rem !important;\n    color: var(--sgcpc-danger) !important;\n    min-height: 1rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hidden,\n#slider-guide-pressure-calculator [data-sgcpc-hidden=\"true\"] {\n    display: none !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-warnings {\n    margin-top: 0.75rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-warning-item {\n    padding: 0.65rem 0.85rem !important;\n    background: #fef3c7 !important;\n    border-left: 4px solid var(--sgcpc-warning) !important;\n    border-radius: 4px !important;\n    font-size: 0.85rem !important;\n    color: #92400e !important;\n    margin-bottom: 0.5rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-warning-item.sgcpc-warning-danger {\n    background: #fee2e2 !important;\n    border-left-color: var(--sgcpc-danger) !important;\n    color: #991b1b !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-btn-row {\n    display: flex !important;\n    flex-wrap: wrap !important;\n    gap: 0.75rem !important;\n    justify-content: center !important;\n    margin-top: 1.25rem !important;\n    padding-top: 1rem !important;\n    border-top: 1px solid var(--sgcpc-border) !important;\n}\n\n#slider-guide-pressure-calculator button {\n    padding: 0.75rem 1.5rem !important;\n    border: none !important;\n    border-radius: 8px !important;\n    font-size: 0.95rem !important;\n    font-weight: 600 !important;\n    font-family: inherit !important;\n    cursor: pointer !important;\n    min-width: 160px !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-btn-primary {\n    background: var(--sgcpc-primary) !important;\n    color: #fff !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-btn-primary:hover {\n    background: var(--sgcpc-primary-dark) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-btn-secondary {\n    background: #f1f5f9 !important;\n    color: var(--sgcpc-text) !important;\n    border: 1px solid var(--sgcpc-border) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner {\n    display: flex !important;\n    align-items: center !important;\n    gap: 1rem !important;\n    padding: 1rem 1.25rem !important;\n    border-radius: 8px !important;\n    margin-bottom: 1rem !important;\n    background: #f1f5f9 !important;\n    border-left: 4px solid var(--sgcpc-text-muted) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner.sgcpc-status-safe {\n    background: #dcfce7 !important;\n    border-left-color: var(--sgcpc-success) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner.sgcpc-status-caution {\n    background: #fef3c7 !important;\n    border-left-color: var(--sgcpc-warning) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner.sgcpc-status-overload {\n    background: #fee2e2 !important;\n    border-left-color: var(--sgcpc-danger) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-icon {\n    font-size: 1.75rem !important;\n    font-weight: 700 !important;\n    min-width: 1.75rem !important;\n    text-align: center !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner strong {\n    display: block !important;\n    font-size: 1rem !important;\n    font-weight: 600 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-status-banner p {\n    font-size: 0.85rem !important;\n    color: var(--sgcpc-text-muted) !important;\n    margin-top: 0.15rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hero {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n    gap: 0.75rem !important;\n    margin-bottom: 1rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hero-card {\n    padding: 1rem !important;\n    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%) !important;\n    border: 1px solid var(--sgcpc-primary-light) !important;\n    border-radius: 8px !important;\n    grid-column: 1 \/ -1 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hero-k {\n    font-size: 0.75rem !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.04em !important;\n    color: var(--sgcpc-text-muted) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hero-v {\n    font-size: 1.45rem !important;\n    font-weight: 700 !important;\n    color: var(--sgcpc-primary-dark) !important;\n    margin: 0.25rem 0 !important;\n    font-variant-numeric: tabular-nums !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hero-u {\n    font-size: 0.78rem !important;\n    color: var(--sgcpc-text-muted) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-viz-row {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n    gap: 0.75rem !important;\n    margin-bottom: 1rem !important;\n}\n\n@media (max-width: 640px) {\n    #slider-guide-pressure-calculator .sgcpc-viz-row {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n#slider-guide-pressure-calculator .sgcpc-viz-box {\n    padding: 0.75rem !important;\n    background: #f8fafc !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-radius: 8px !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-viz-title {\n    font-size: 0.75rem !important;\n    font-weight: 600 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.03em !important;\n    color: var(--sgcpc-text-muted) !important;\n    margin-bottom: 0.5rem !important;\n    text-align: center !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-schematic {\n    width: 100% !important;\n    max-width: 220px !important;\n    height: auto !important;\n    display: block !important;\n    margin: 0 auto !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-rail {\n    fill: #cbd5e1 !important;\n    stroke: #64748b !important;\n    stroke-width: 1 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-slider {\n    fill: #94a3b8 !important;\n    stroke: #475569 !important;\n    stroke-width: 1.2 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-pad {\n    fill: #3b82f6 !important;\n    stroke: #1e40af !important;\n    stroke-width: 0.8 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-force-down {\n    stroke: var(--sgcpc-danger) !important;\n    stroke-width: 2 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-arrow {\n    fill: var(--sgcpc-danger) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-label {\n    font-size: 10px !important;\n    fill: #64748b !important;\n    font-family: var(--sgcpc-font) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-sch-dim {\n    stroke: #64748b !important;\n    stroke-width: 0.8 !important;\n    fill: none !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-heatmap {\n    display: grid !important;\n    grid-template-columns: repeat(3, 1fr) !important;\n    gap: 3px !important;\n    max-width: 120px !important;\n    margin: 0 auto 0.5rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-hm-cell {\n    aspect-ratio: 1 !important;\n    border-radius: 3px !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-gauge-row {\n    display: flex !important;\n    align-items: center !important;\n    gap: 0.75rem !important;\n    justify-content: center !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-gauge-svg {\n    width: 140px !important;\n    height: auto !important;\n    flex-shrink: 0 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-gauge-readout {\n    font-size: 1.2rem !important;\n    font-weight: 700 !important;\n    color: var(--sgcpc-primary-dark) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-gauge-label {\n    font-size: 0.72rem !important;\n    color: var(--sgcpc-text-muted) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util {\n    margin-bottom: 1rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util-head {\n    display: flex !important;\n    justify-content: space-between !important;\n    font-size: 0.82rem !important;\n    margin-bottom: 0.35rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util-track {\n    height: 12px !important;\n    background: #e2e8f0 !important;\n    border-radius: 6px !important;\n    overflow: hidden !important;\n    position: relative !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util-fill {\n    height: 100% !important;\n    background: var(--sgcpc-success) !important;\n    border-radius: 6px !important;\n    width: 0 !important;\n    transition: width 0.3s ease !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util-fill.sgcpc-util-caution {\n    background: var(--sgcpc-warning) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-util-fill.sgcpc-util-over {\n    background: var(--sgcpc-danger) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-results-grid {\n    display: grid !important;\n    grid-template-columns: repeat(2, 1fr) !important;\n    gap: 0.65rem !important;\n    margin-bottom: 1rem !important;\n}\n\n@media (max-width: 520px) {\n    #slider-guide-pressure-calculator .sgcpc-results-grid {\n        grid-template-columns: 1fr !important;\n    }\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-item {\n    padding: 0.75rem 0.85rem !important;\n    background: #f8fafc !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-radius: 8px !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-label {\n    display: block !important;\n    font-size: 0.72rem !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.03em !important;\n    color: var(--sgcpc-text-muted) !important;\n    margin-bottom: 0.2rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-value {\n    display: block !important;\n    font-size: 1.05rem !important;\n    font-weight: 700 !important;\n    color: var(--sgcpc-primary-dark) !important;\n    font-variant-numeric: tabular-nums !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-value.sgcpc-risk-low {\n    color: var(--sgcpc-success) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-value.sgcpc-risk-moderate {\n    color: var(--sgcpc-warning) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-result-value.sgcpc-risk-high {\n    color: var(--sgcpc-danger) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-rec-box {\n    padding: 0.85rem 1rem !important;\n    background: #f0fdf4 !important;\n    border: 1px solid #bbf7d0 !important;\n    border-radius: 8px !important;\n    margin-bottom: 1rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-rec-box h3 {\n    font-size: 0.85rem !important;\n    font-weight: 700 !important;\n    color: #166534 !important;\n    margin-bottom: 0.5rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-rec-box ul {\n    padding-left: 1.2rem !important;\n    list-style: disc !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-rec-box li {\n    font-size: 0.82rem !important;\n    color: #15803d !important;\n    margin-bottom: 0.3rem !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-disclaimer {\n    margin-top: 1.25rem !important;\n    padding: 1rem 1.25rem !important;\n    background: #f8fafc !important;\n    border: 1px solid var(--sgcpc-border) !important;\n    border-radius: 8px !important;\n    font-size: 0.8rem !important;\n    color: var(--sgcpc-text-muted) !important;\n    line-height: 1.55 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-disclaimer strong {\n    color: var(--sgcpc-text) !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-js-store,\n#slider-guide-pressure-calculator .sgcpc-js-chunk {\n    display: none !important;\n    visibility: hidden !important;\n    width: 0 !important;\n    height: 0 !important;\n    overflow: hidden !important;\n    position: absolute !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-wear-badge {\n    display: inline-block !important;\n    padding: 0.35rem 0.75rem !important;\n    border-radius: 999px !important;\n    font-size: 0.78rem !important;\n    font-weight: 700 !important;\n    text-transform: uppercase !important;\n    letter-spacing: 0.04em !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-wear-badge.sgcpc-risk-low {\n    background: #dcfce7 !important;\n    color: #166534 !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-wear-badge.sgcpc-risk-moderate {\n    background: #fef3c7 !important;\n    color: #92400e !important;\n}\n\n#slider-guide-pressure-calculator .sgcpc-wear-badge.sgcpc-risk-high {\n    background: #fee2e2 !important;\n    color: #991b1b !important;\n}\n\n<\/style>\n\n<div id=\"slider-guide-pressure-calculator\"><div class=\"sgcpc-js-store\" aria-hidden=\"true\" hidden><span class=\"sgcpc-js-chunk\">LyoqDQogKiBTbGlkZXIgLyBHdWlkZSBSYWlsIENvbnRhY3QgUHJlc3N1cmUgQ2FsY3VsYXRvcg0KICogU2NvcGVkIGZvciBXb3JkUHJlc3MgZW1iZWQg4oCUICNzbGlkZXItZ3VpZGUtcHJlc3N1cmUtY2FsY3VsYXRvcg0KICovDQooZnVuY3Rpb24gKCkgew0KICAgICd1c2Ugc3RyaWN0JzsNCg0KICAgIHZhciBST09UX0lEID0gJ3NsaWRlci1ndWlkZS1wcmVzc3VyZS1jYWxjdWxhdG9yJzsNCiAgICB2YXIgTU1fVE9fSU4gPSAxIC8gMjUuNDsNCiAgICB2YXIgSU5fVE9fTU0gPSAyNS40Ow0KICAgIHZhciBNTTJfVE9fSU4yID0gMSAvIDY0NS4xNjsNCiAgICB2YXIgSU4yX1RPX01NMiA9IDY0NS4xNjsNCiAgICB2YXIgTVBBX1RPX1BTSSA9IDE0NS4wMzc3Mzc3MzsNCiAgICB2YXIgUFNJX1RPX01QQSA9IDEgLyBNUEFfVE9fUFNJOw0KICAgIHZhciBOX1RPX0tOID0gMC4wMDE7DQogICAgdmFyIEtOX1RPX04gPSAxMDAwOw0KICAgIHZhciBOX1RPX0xCRiA9IDAuMjI0ODA4OTQzOw0KICAgIHZhciBMQkZfVE9fTiA9IDEgLyBOX1RPX0xCRjsNCiAgICB2YXIgTVBTX1RPX0ZUUE0gPSAxOTYuODUwMzkzNzAxOw0KICAgIHZhciBGVFBNX1RPX01QUyA9IDEgLyBNUFNfVE9fRlRQTTsNCiAgICB2YXIgR0FVR0VfQVJDID0gMjgyLjc0MzsNCiAgICB2YXIgTkEgPSAnLSc7DQogICAgdmFyIFNFUCA9ICcgfCAnOw0KDQogICAgdmFyIE1BVEVSSUFMX1BSRVNTVVJFID0gew0KICAgICAgICAnaGFyZGVuZWQtc3RlZWwnOiB7IG1wYTogMTUwLCBsYWJlbDogJ0hhcmRlbmVkIFN0ZWVsJywgd2VhcjogMC42IH0sDQogICAgICAgICdjYXJib24tc3RlZWwnOiB7IG1wYTogODAsIGxhYmVsOiAnQ2FyYm9uIFN0ZWVsJywgd2VhcjogMC44IH0sDQogICAgICAgICdjYXN0LWlyb24nOiB7IG1wYTogNjAsIGxhYmVsOiAnQ2FzdCBJcm9uJywgd2VhcjogMC45IH0sDQogICAgICAgICdicm9uemUnOiB7IG1wYTogMjUsIGxhYmVsOiAnQnJvbnplJywgd2VhcjogMS4wIH0sDQogICAgICAgICdhbHVtaW51bS1icm9uemUnOiB7IG1wYTogMzUsIGxhYmVsOiAnQWx1bWludW0gQnJvbnplJywgd2VhcjogMC45NSB9LA0KICAgICAgICAnZW5naW5lZXJpbmctcGxhc3RpYyc6IHsgbXBhOiAxNSwgbGFiZWw6ICdFbmdpbmVlcmluZyBQbGFzdGljJywgd2VhcjogMS4yIH0sDQogICAgICAgICdwdGZlLWNvbXBvc2l0ZSc6IHsgbXBhOiA4LCBsYWJlbDogJ1BURkUgQ29tcG9zaXRlJywgd2VhcjogMC43IH0sDQogICAgICAgICdjdXN0b20nOiB7IG1wYTogbnVsbCwgbGFiZWw6ICdDdXN0b20nLCB3ZWFyOiAxLjAgfQ0KICAgIH07DQoNCiAgICB2YXIgTFVCRV9GQUNUT1JTID0gew0KICAgICAgICBleGNlbGxlbnQ6IDAuNywNCiAgICAgICAgZ29vZDogMC44NSwNCiAgICAgICAgbGltaXRlZDogMS4wLA0KICAgICAgICBwb29yOiAxLjMsDQogICAgICAgIGRyeTogMS42DQogICAgfTsNCg0KICAgIHZhciBERUZBVUxUUyA9IHsNCiAgICAgICAgdW5pdDogJ21ldHJpYycsDQogICAgICAgIG1vZGU6ICdwcmVzc3VyZScsDQogICAgICAgIGNvbnRhY3RUeXBlOiAnd2Vhci1wbGF0ZScsDQogICAgICAgIGxlbmd0aDogMjAwLA0KICAgICAgICB3aWR0aDogNDAsDQogICAgICAgIHBhZHM6IDIsDQogICAgICAgIGV0YTogMC45LA0KICAgICAgICBsb2FkOiA4MCwNCiAgICAgICAgbG9hZFVuaXQ6ICdrTicsDQogICAgICAgIGtkOiAxLjIsDQogICAgICAgIHNsaWRlck1hdDogJ2Jyb256ZScsDQogICAgICAgIGd1aWRlTWF0OiAnaGFyZGVuZWQtc3RlZWwnLA0KICAgICAgICBwUmVmOiAyNSwNCiAgICAgICAgcFJlZlVuaXQ6ICdNUGEnLA0KICAgICAgICBzZjogMiwNCiAgICAgICAgbHViZTogJ2dvb2QnLA0KICAgICAgICBzcGVlZDogJycsDQogICAgICAgIHRlbXA6ICcnDQogICAgfTsNCg0KICAgIHZhciByb290LCBlbHMsIHN0YXRlOw0KDQogICAgZnVuY3Rpb24gJChpZCkgew0KICAgICAgICByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBwYXJzZU51bSh2KSB7DQogICAgICAgIGlmICh2ID09PSAnJyB8fCB2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCkgcmV0dXJuIG51bGw7DQogICAgICAgIHZhciBuID0gcGFyc2VGbG9hdChTdHJpbmcodikucmVwbGFjZSgnLCcsICcuJykpOw0KICAgICAgICByZXR1cm4gaXNOYU4obikgPyBudWxsIDogbjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBjbGFtcCh2LCBsbywgaGkpIHsNCiAgICAgICAgcmV0dXJuIE1hdGgubWF4KGxvLCBNYXRoLm1pbihoaSwgdikpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZtdCh2LCBkKSB7DQogICAgICAgIGlmICghaXNGaW5pdGUodikpIHJldHVybiBOQTsNCiAgICAgICAgcmV0dXJuIHYudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgew0KICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBkLA0KICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwDQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNldFZpc2libGUobm9kZXMsIHNob3cpIHsNCiAgICAgICAgW10uZm9yRWFjaC5jYWxsKG5vZGVzLCBmdW5jdGlvbiAoZWwpIHsNCiAgICAgICAgICAgIGVsLmNsYXNzTGlzdC50b2dnbGUoJ3NnY3BjLWhpZGRlbicsICFzaG93KTsNCiAgICAgICAgICAgIGlmIChzaG93KSB7DQogICAgICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNnY3BjLWhpZGRlbicpOw0KICAgICAgICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnJzsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNnY3BjLWhpZGRlbicsICd0cnVlJyk7DQogICAgICAgICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2hvd1NlY3Rpb24oZWwpIHsNCiAgICAgICAgaWYgKCFlbCkgcmV0dXJuOw0KICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKCdzZ2NwYy1oaWRkZW4nKTsNCiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNnY3BjLWhpZGRlbicpOw0KICAgICAgICBlbC5zdHlsZS5kaXNwbGF5ID0gJyc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaGlkZVNlY3Rpb24oZWwpIHsNCiAgICAgICAgaWYgKCFlbCkgcmV0dXJuOw0KICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCdzZ2NwYy1oaWRkZW4nKTsNCiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkYXRhLXNnY3BjLWhpZGRlbicsICd0cnVlJyk7DQogICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0TGVuZ3RoVW5pdCgpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gJ21tJyA6ICdpbic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0QXJlYVVuaXQoKSB7DQogICAgICAgIHJldHVybiBzdGF0ZS51bml0ID09PSAnbWV0cmljJyA\/ICdtbTInIDogJ2luMic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0UHJlc3N1cmVVbml0KCkgew0KICAgICAgICByZXR1cm4gc3RhdGUudW5pdCA9PT0gJ21ldHJpYycgPyAnTVBhJyA6ICdwc2knOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldEZvcmNlVW5pdCgpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gJ04nIDogJ2xiZic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0U3BlZWRVbml0KCkgew0KICAgICAgICByZXR1cm4gc3RhdGUudW5pdCA9PT0gJ21ldHJpYycgPyAnbS9zJyA6ICdmdC9taW4nOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldFRlbXBVbml0KCkgew0KICAgICAgICByZXR1cm4gc3RhdGUudW5pdCA9PT0gJ21ldHJpYycgPyAnZGVnIEMnIDogJ2RlZyBGJzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0b01ldHJpY0xlbmd0aCh2KSB7DQogICAgICAgIHJldHVybiBzdGF0ZS51bml0ID09PSAnbWV0cmljJyA\/IHYgOiB2ICogSU5fVE9fTU07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZnJvbU1ldHJpY0xlbmd0aCh2KSB7DQogICAgICAgIHJldHVybiBzdGF0ZS51bml0ID09PSAnbWV0cmljJyA\/IHYgOiB2ICogTU1fVE9fSU47DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdG9NZXRyaWNBcmVhKHYpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gdiA6IHYgKiBJTjJfVE9fTU0yOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZyb21NZXRyaWNBcmVhKHYpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gdiA6IHYgKiBNTTJfVE9fSU4yOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljUHJlc3N1cmUodiwgdW5pdCkgew0KICAgICAgICBpZiAodW5pdCA9PT0gJ01QYScpIHJldHVybiB2Ow0KICAgICAgICByZXR1cm4gdiAqIFBTSV9UT19NUEE7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZnJvbU1ldHJpY1ByZXNzdXJlKHYsIHVuaXQpIHsNCiAg<\/span><span class=\"sgcpc-js-chunk\">ICAgICAgaWYgKHVuaXQgPT09ICdNUGEnKSByZXR1cm4gdjsNCiAgICAgICAgcmV0dXJuIHYgKiBNUEFfVE9fUFNJOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljRm9yY2UodiwgdW5pdCkgew0KICAgICAgICBpZiAodW5pdCA9PT0gJ04nKSByZXR1cm4gdjsNCiAgICAgICAgaWYgKHVuaXQgPT09ICdrTicpIHJldHVybiB2ICogS05fVE9fTjsNCiAgICAgICAgcmV0dXJuIHYgKiBMQkZfVE9fTjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmcm9tTWV0cmljRm9yY2UodiwgdW5pdCkgew0KICAgICAgICBpZiAodW5pdCA9PT0gJ04nKSByZXR1cm4gdjsNCiAgICAgICAgaWYgKHVuaXQgPT09ICdrTicpIHJldHVybiB2ICogTl9UT19LTjsNCiAgICAgICAgcmV0dXJuIHYgKiBOX1RPX0xCRjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0b01ldHJpY1NwZWVkKHYpIHsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gdiA6IHYgKiBGVFBNX1RPX01QUzsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBmcm9tTWV0cmljU3BlZWQodikgew0KICAgICAgICByZXR1cm4gc3RhdGUudW5pdCA9PT0gJ21ldHJpYycgPyB2IDogdiAqIE1QU19UT19GVFBNOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRvTWV0cmljVGVtcCh2KSB7DQogICAgICAgIGlmICh2ID09PSBudWxsKSByZXR1cm4gbnVsbDsNCiAgICAgICAgcmV0dXJuIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gdiA6ICh2IC0gMzIpICogNSAvIDk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZm9ybWF0Rm9yY2Uodk4sIHNob3dBbHQpIHsNCiAgICAgICAgdmFyIHUgPSBlbHMubG9hZFVuaXQgPyBlbHMubG9hZFVuaXQudmFsdWUgOiAna04nOw0KICAgICAgICB2YXIgbWFpbiA9IGZyb21NZXRyaWNGb3JjZSh2TiwgdSk7DQogICAgICAgIHZhciB1bml0TGFiZWwgPSB1Ow0KICAgICAgICB2YXIgc3RyID0gZm10KG1haW4sIHUgPT09ICdrTicgPyAzIDogMSkgKyAnICcgKyB1bml0TGFiZWw7DQogICAgICAgIGlmIChzaG93QWx0ICYmIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnKSB7DQogICAgICAgICAgICBzdHIgKz0gJyAoJyArIGZtdCh2TiwgMCkgKyAnIE4pJzsNCiAgICAgICAgfSBlbHNlIGlmIChzaG93QWx0ICYmIHN0YXRlLnVuaXQgPT09ICdpbXBlcmlhbCcpIHsNCiAgICAgICAgICAgIHN0ciArPSAnICgnICsgZm10KHZOICogTl9UT19MQkYsIDEpICsgJyBsYmYpJzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gc3RyOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGZvcm1hdEFyZWEodk1tMikgew0KICAgICAgICB2YXIgdiA9IGZyb21NZXRyaWNBcmVhKHZNbTIpOw0KICAgICAgICB2YXIgdSA9IGdldEFyZWFVbml0KCk7DQogICAgICAgIGlmIChzdGF0ZS51bml0ID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgaWYgKHYgPj0gMTAwMDApIHJldHVybiBmbXQodiAvIDEwMCwgMikgKyAnIGNtMiAoJyArIGZtdCh2LCAxKSArICcgbW0yKSc7DQogICAgICAgICAgICByZXR1cm4gZm10KHYsIDEpICsgJyBtbTInOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmbXQodiwgNCkgKyAnIGluMic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZm9ybWF0UHJlc3N1cmUodk1wYSkgew0KICAgICAgICB2YXIgdSA9IGVscy5wUmVmVW5pdCA\/IGVscy5wUmVmVW5pdC52YWx1ZSA6ICdNUGEnOw0KICAgICAgICB2YXIgdiA9IGZyb21NZXRyaWNQcmVzc3VyZSh2TXBhLCB1KTsNCiAgICAgICAgdmFyIHN0ciA9IGZtdCh2LCB1ID09PSAnTVBhJyA\/IDIgOiAwKSArICcgJyArIHU7DQogICAgICAgIGlmIChzdGF0ZS51bml0ID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgc3RyICs9ICcgKCcgKyBmbXQodk1wYSAqIE1QQV9UT19QU0ksIDApICsgJyBwc2kpJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHN0ciArPSAnICgnICsgZm10KHZNcGEsIDIpICsgJyBNUGEpJzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gc3RyOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldFdlYWtlck1hdGVyaWFsTXBhKCkgew0KICAgICAgICB2YXIgcyA9IE1BVEVSSUFMX1BSRVNTVVJFW2Vscy5zbGlkZXJNYXQudmFsdWVdIHx8IE1BVEVSSUFMX1BSRVNTVVJFLmN1c3RvbTsNCiAgICAgICAgdmFyIGcgPSBNQVRFUklBTF9QUkVTU1VSRVtlbHMuZ3VpZGVNYXQudmFsdWVdIHx8IE1BVEVSSUFMX1BSRVNTVVJFLmN1c3RvbTsNCiAgICAgICAgaWYgKHMubXBhID09PSBudWxsICYmIGcubXBhID09PSBudWxsKSByZXR1cm4gbnVsbDsNCiAgICAgICAgaWYgKHMubXBhID09PSBudWxsKSByZXR1cm4gZy5tcGE7DQogICAgICAgIGlmIChnLm1wYSA9PT0gbnVsbCkgcmV0dXJuIHMubXBhOw0KICAgICAgICByZXR1cm4gTWF0aC5taW4ocy5tcGEsIGcubXBhKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGVNYXRlcmlhbEhpbnQoKSB7DQogICAgICAgIGlmICghZWxzLm1hdGVyaWFsSGludCkgcmV0dXJuOw0KICAgICAgICB2YXIgd2VhayA9IGdldFdlYWtlck1hdGVyaWFsTXBhKCk7DQogICAgICAgIGlmICh3ZWFrID09PSBudWxsKSB7DQogICAgICAgICAgICBlbHMubWF0ZXJpYWxIaW50LnRleHRDb250ZW50ID0gJ0VudGVyIHJlZmVyZW5jZSBhbGxvd2FibGUgY29udGFjdCBwcmVzc3VyZSBmb3IgY3VzdG9tIG1hdGVyaWFscy4nOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIHZhciBzTGFiZWwgPSAoTUFURVJJQUxfUFJFU1NVUkVbZWxzLnNsaWRlck1hdC52YWx1ZV0gfHwge30pLmxhYmVsIHx8ICdTbGlkZXInOw0KICAgICAgICB2YXIgZ0xhYmVsID0gKE1BVEVSSUFMX1BSRVNTVVJFW2Vscy5ndWlkZU1hdC52YWx1ZV0gfHwge30pLmxhYmVsIHx8ICdHdWlkZSc7DQogICAgICAgIGVscy5tYXRlcmlhbEhpbnQudGV4dENvbnRlbnQgPQ0KICAgICAgICAgICAgJ1JlZmVyZW5jZSBwcmVzc3VyZSBmb3IgJyArIHNMYWJlbCArICcgLyAnICsgZ0xhYmVsICsgJyBwYWlyICh3ZWFrZXIgZ292ZXJucyk6IH4nICsNCiAgICAgICAgICAgIGZtdChmcm9tTWV0cmljUHJlc3N1cmUod2VhaywgZWxzLnBSZWZVbml0LnZhbHVlKSwgMSkgKyAnICcgKyBlbHMucFJlZlVuaXQudmFsdWUgKw0KICAgICAgICAgICAgJyAtIHZlcmlmeSB3aXRoIG1hbnVmYWN0dXJlciBkYXRhLic7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdXBkYXRlTWF0ZXJpYWxEZWZhdWx0cygpIHsNCiAgICAgICAgaWYgKHN0YXRlLnBSZWZNYW51YWwpIHJldHVybjsNCiAgICAgICAgdmFyIHdlYWsgPSBnZXRXZWFrZXJNYXRlcmlhbE1wYSgpOw0KICAgICAgICBpZiAod2VhayAhPT0gbnVsbCkgew0KICAgICAgICAgICAgZWxzLnBSZWYudmFsdWUgPSBmcm9tTWV0cmljUHJlc3N1cmUod2VhaywgZWxzLnBSZWZVbml0LnZhbHVlKS50b0ZpeGVkKA0KICAgICAgICAgICAgICAgIGVscy5wUmVmVW5pdC52YWx1ZSA9PT0gJ01QYScgPyAxIDogMA0KICAgICAgICAgICAgKTsNCiAgICAgICAgfQ0KICAgICAgICB1cGRhdGVNYXRlcmlhbEhpbnQoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGVVbml0TGFiZWxzKCkgew0KICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXVuaXQ9Imxlbmd0aCJdJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0TGVuZ3RoVW5pdCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS11bml0PSJhcmVhIl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgew0KICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBnZXRBcmVhVW5pdCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS11bml0PSJwcmVzc3VyZSJdJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0UHJlc3N1cmVVbml0KCk7DQogICAgICAgIH0pOw0KICAgICAgICByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXVuaXQ9InNwZWVkIl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgew0KICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSBnZXRTcGVlZFVuaXQoKTsNCiAgICAgICAgfSk7DQogICAgICAgIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdW5pdD0idGVtcCJdJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsNCiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gZ2V0VGVtcFVuaXQoKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY29udmVydE9uVW5pdENoYW5nZShmcm9tLCB0bykgew0KICAgICAgICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybjsNCg0KICAgICAgICBmdW5jdGlvbiBjb252TGVuKGlucHV0KSB7DQogICAgICAgICAgICB2YXIgdiA9IHBhcnNlTnVtKGlucHV0LnZhbHVlKTsNCiAgICAgICAgICAgIGlmICh2ID09PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICh0byA9PT0gJ21ldHJpYycgPyB2<\/span><span class=\"sgcpc-js-chunk\">ICogSU5fVE9fTU0gOiB2ICogTU1fVE9fSU4pLnRvRml4ZWQodG8gPT09ICdtZXRyaWMnID8gMSA6IDMpOw0KICAgICAgICB9DQogICAgICAgIGNvbnZMZW4oZWxzLmxlbmd0aCk7DQogICAgICAgIGNvbnZMZW4oZWxzLndpZHRoKTsNCg0KICAgICAgICB2YXIgdGVtcCA9IHBhcnNlTnVtKGVscy50ZW1wLnZhbHVlKTsNCiAgICAgICAgaWYgKHRlbXAgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGlmIChmcm9tID09PSAnbWV0cmljJyAmJiB0byA9PT0gJ2ltcGVyaWFsJykgew0KICAgICAgICAgICAgICAgIGVscy50ZW1wLnZhbHVlID0gKHRlbXAgKiA5IC8gNSArIDMyKS50b0ZpeGVkKDEpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tID09PSAnaW1wZXJpYWwnICYmIHRvID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgICAgIGVscy50ZW1wLnZhbHVlID0gKCh0ZW1wIC0gMzIpICogNSAvIDkpLnRvRml4ZWQoMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgc3BlZWQgPSBwYXJzZU51bShlbHMuc3BlZWQudmFsdWUpOw0KICAgICAgICBpZiAoc3BlZWQgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGVscy5zcGVlZC52YWx1ZSA9ICh0byA9PT0gJ21ldHJpYycNCiAgICAgICAgICAgICAgICA\/IHNwZWVkICogRlRQTV9UT19NUFMNCiAgICAgICAgICAgICAgICA6IHNwZWVkICogTVBTX1RPX0ZUUE0pLnRvRml4ZWQodG8gPT09ICdtZXRyaWMnID8gMyA6IDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKHN0YXRlLnBSZWZNYW51YWwpIHsNCiAgICAgICAgICAgIHZhciBwID0gcGFyc2VOdW0oZWxzLnBSZWYudmFsdWUpOw0KICAgICAgICAgICAgaWYgKHAgIT09IG51bGwgJiYgZWxzLnBSZWZVbml0LnZhbHVlID09PSAnTVBhJykgew0KICAgICAgICAgICAgICAgIC8qIE1QYSBpcyB1bml2ZXJzYWwgKi8NCiAgICAgICAgICAgIH0gZWxzZSBpZiAocCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIC8qIHBzaSBzdGF5cyBwc2kgKi8NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHVwZGF0ZU1hdGVyaWFsRGVmYXVsdHMoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHVwZGF0ZU1vZGVVSSgpIHsNCiAgICAgICAgdmFyIG1vZGUgPSBlbHMubW9kZS52YWx1ZTsNCiAgICAgICAgc2V0VmlzaWJsZShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZ2NwYy1tb2RlLWxvYWQnKSwgbW9kZSAhPT0gJ2FsbG93YWJsZScpOw0KICAgICAgICBzZXRWaXNpYmxlKHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnNnY3BjLW1vZGUtZ2VvbWV0cnknKSwgbW9kZSAhPT0gJ3JlcXVpcmVkJyB8fCB0cnVlKTsNCiAgICAgICAgc2V0VmlzaWJsZShyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZ2NwYy1tb2RlLWdlb20tb3B0aW9uYWwnKSwgbW9kZSA9PT0gJ3JlcXVpcmVkJyk7DQoNCiAgICAgICAgdmFyIG5vdGVzID0gew0KICAgICAgICAgICAgcHJlc3N1cmU6ICdDb250YWN0IFByZXNzdXJlIENoZWNrOiBldmFsdWF0ZSBhdmVyYWdlIGNvbnRhY3QgcHJlc3N1cmUgZm9yIHRoZSBnaXZlbiBsb2FkLCBnZW9tZXRyeSwgYW5kIG1hdGVyaWFsIGxpbWl0cy4nLA0KICAgICAgICAgICAgYWxsb3dhYmxlOiAnQWxsb3dhYmxlIExvYWQ6IGNhbGN1bGF0ZSBtYXhpbXVtIHRvdGFsIGxvYWQgZnJvbSBjb250YWN0IGdlb21ldHJ5IGFuZCBhbGxvd2FibGUgcHJlc3N1cmUuJywNCiAgICAgICAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQgQ29udGFjdCBBcmVhOiBkZXRlcm1pbmUgZWZmZWN0aXZlIGNvbnRhY3QgYXJlYSBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpZWQgbG9hZCBhbmQgYWxsb3dhYmxlIHByZXNzdXJlLicNCiAgICAgICAgfTsNCiAgICAgICAgaWYgKGVscy5tb2RlTm90ZSkgZWxzLm1vZGVOb3RlLnRleHRDb250ZW50ID0gbm90ZXNbbW9kZV0gfHwgJyc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY2xlYXJFcnJvcnMoKSB7DQogICAgICAgIFsnbGVuZ3RoJywgJ3dpZHRoJywgJ3BhZHMnLCAnZXRhJywgJ2xvYWQnLCAncFJlZicsICdzZiddLmZvckVhY2goZnVuY3Rpb24gKGtleSkgew0KICAgICAgICAgICAgdmFyIGVyciA9ICQoJ3NnY3BjRXJyJyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKSk7DQogICAgICAgICAgICB2YXIgaW5wID0gZWxzW2tleV07DQogICAgICAgICAgICBpZiAoZXJyKSBlcnIudGV4dENvbnRlbnQgPSAnJzsNCiAgICAgICAgICAgIGlmIChpbnApIGlucC5jbGFzc0xpc3QucmVtb3ZlKCdzZ2NwYy1lcnJvcicpOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB2YWxpZGF0ZUFuZENhbGN1bGF0ZSgpIHsNCiAgICAgICAgY2xlYXJFcnJvcnMoKTsNCiAgICAgICAgdmFyIHdhcm5pbmdzID0gW107DQogICAgICAgIHZhciB2YWxpZCA9IHRydWU7DQogICAgICAgIHZhciBtb2RlID0gZWxzLm1vZGUudmFsdWU7DQoNCiAgICAgICAgdmFyIEwgPSBwYXJzZU51bShlbHMubGVuZ3RoLnZhbHVlKTsNCiAgICAgICAgdmFyIFcgPSBwYXJzZU51bShlbHMud2lkdGgudmFsdWUpOw0KICAgICAgICB2YXIgbiA9IHBhcnNlTnVtKGVscy5wYWRzLnZhbHVlKTsNCiAgICAgICAgdmFyIGV0YSA9IHBhcnNlTnVtKGVscy5ldGEudmFsdWUpOw0KICAgICAgICB2YXIga2QgPSBwYXJzZU51bShlbHMua2QudmFsdWUpIHx8IDE7DQogICAgICAgIHZhciBzZiA9IHBhcnNlTnVtKGVscy5zZi52YWx1ZSk7DQogICAgICAgIHZhciBwUmVmID0gcGFyc2VOdW0oZWxzLnBSZWYudmFsdWUpOw0KICAgICAgICB2YXIgRnRvdGFsID0gbW9kZSA9PT0gJ2FsbG93YWJsZScgPyBudWxsIDogdG9NZXRyaWNGb3JjZShwYXJzZU51bShlbHMubG9hZC52YWx1ZSksIGVscy5sb2FkVW5pdC52YWx1ZSk7DQoNCiAgICAgICAgaWYgKG1vZGUgIT09ICdyZXF1aXJlZCcpIHsNCiAgICAgICAgICAgIGlmIChMID09PSBudWxsIHx8IEwgPD0gMCkgew0KICAgICAgICAgICAgICAgICQoJ3NnY3BjRXJyTGVuZ3RoJykudGV4dENvbnRlbnQgPSAnQ29udGFjdCBsZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgICAgIGVscy5sZW5ndGguY2xhc3NMaXN0LmFkZCgnc2djcGMtZXJyb3InKTsNCiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKFcgPT09IG51bGwgfHwgVyA8PSAwKSB7DQogICAgICAgICAgICAgICAgJCgnc2djcGNFcnJXaWR0aCcpLnRleHRDb250ZW50ID0gJ0NvbnRhY3Qgd2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgICAgIGVscy53aWR0aC5jbGFzc0xpc3QuYWRkKCdzZ2NwYy1lcnJvcicpOw0KICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoTCAhPT0gbnVsbCAmJiBMIDw9IDApIHsNCiAgICAgICAgICAgICAgICAkKCdzZ2NwY0Vyckxlbmd0aCcpLnRleHRDb250ZW50ID0gJ0NvbnRhY3QgbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJzsNCiAgICAgICAgICAgICAgICBlbHMubGVuZ3RoLmNsYXNzTGlzdC5hZGQoJ3NnY3BjLWVycm9yJyk7DQogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChXICE9PSBudWxsICYmIFcgPD0gMCkgew0KICAgICAgICAgICAgICAgICQoJ3NnY3BjRXJyV2lkdGgnKS50ZXh0Q29udGVudCA9ICdDb250YWN0IHdpZHRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJzsNCiAgICAgICAgICAgICAgICBlbHMud2lkdGguY2xhc3NMaXN0LmFkZCgnc2djcGMtZXJyb3InKTsNCiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKG4gPT09IG51bGwgfHwgbiA8PSAwIHx8IE1hdGguZmxvb3IobikgIT09IG4pIHsNCiAgICAgICAgICAgICQoJ3NnY3BjRXJyUGFkcycpLnRleHRDb250ZW50ID0gJ051bWJlciBvZiBwYWRzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLic7DQogICAgICAgICAgICBlbHMucGFkcy5jbGFzc0xpc3QuYWRkKCdzZ2NwYy1lcnJvcicpOw0KICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChldGEgPT09IG51bGwgfHwgZXRhIDw9IDAgfHwgZXRhID4gMSkgew0KICAgICAgICAgICAgJCgnc2djcGNFcnJFdGEnKS50ZXh0Q29udGVudCA9ICdVdGlsaXphdGlvbiBmYWN0b3IgbXVzdCBiZSA+IDAgYW5kIDw9IDEuJzsNCiAgICAgICAgICAgIGVscy5ldGEuY2xhc3NMaXN0LmFkZCgnc2djcGMtZXJyb3InKTsNCiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoc2YgPT09IG51bGwgfHwgc2YgPD0gMCkgew0KICAgICAgICAgICAgJCgnc2djcGNFcnJTZicpLnRleHRDb250ZW50ID0gJ1NhZmV0eSBmYWN0b3IgbXVz<\/span><span class=\"sgcpc-js-chunk\">dCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLnNmLmNsYXNzTGlzdC5hZGQoJ3NnY3BjLWVycm9yJyk7DQogICAgICAgICAgICB2YWxpZCA9IGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKHBSZWYgPT09IG51bGwgfHwgcFJlZiA8PSAwKSB7DQogICAgICAgICAgICAkKCdzZ2NwY0VyclBSZWYnKS50ZXh0Q29udGVudCA9ICdBbGxvd2FibGUgcHJlc3N1cmUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgZWxzLnBSZWYuY2xhc3NMaXN0LmFkZCgnc2djcGMtZXJyb3InKTsNCiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAobW9kZSAhPT0gJ2FsbG93YWJsZScpIHsNCiAgICAgICAgICAgIGlmIChGdG90YWwgPT09IG51bGwgfHwgRnRvdGFsIDw9IDApIHsNCiAgICAgICAgICAgICAgICAkKCdzZ2NwY0VyckxvYWQnKS50ZXh0Q29udGVudCA9ICdBcHBsaWVkIGxvYWQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4nOw0KICAgICAgICAgICAgICAgIGVscy5sb2FkLmNsYXNzTGlzdC5hZGQoJ3NnY3BjLWVycm9yJyk7DQogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmICghdmFsaWQpIHsNCiAgICAgICAgICAgIGhpZGVTZWN0aW9uKGVscy5yZXN1bHRzKTsNCiAgICAgICAgICAgIGRpc3BsYXlXYXJuaW5ncyh3YXJuaW5ncyk7DQogICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBMbW0gPSB0b01ldHJpY0xlbmd0aChMIHx8IDApOw0KICAgICAgICB2YXIgV21tID0gdG9NZXRyaWNMZW5ndGgoVyB8fCAwKTsNCiAgICAgICAgdmFyIEEgPSBMbW0gKiBXbW07DQogICAgICAgIHZhciBBZWZmID0gQSAqIGV0YTsNCiAgICAgICAgdmFyIHBtYXRlcmlhbCA9IHRvTWV0cmljUHJlc3N1cmUocFJlZiwgZWxzLnBSZWZVbml0LnZhbHVlKTsNCiAgICAgICAgdmFyIHBhbGxvdyA9IHBtYXRlcmlhbCAvIHNmOw0KICAgICAgICB2YXIgRnBhZCA9IG1vZGUgPT09ICdhbGxvd2FibGUnID8gMCA6IEZ0b3RhbCAvIG47DQogICAgICAgIHZhciBGZGVzaWduID0gRnBhZCAqIGtkOw0KDQogICAgICAgIHZhciBwID0gMDsNCiAgICAgICAgdmFyIEZhbGxvd1BhZCA9IHBhbGxvdyAqIEFlZmY7DQogICAgICAgIHZhciBGYWxsb3dUb3RhbCA9IEZhbGxvd1BhZCAqIG4gLyBrZDsNCiAgICAgICAgdmFyIEFyZXF1aXJlZCA9IDA7DQoNCiAgICAgICAgaWYgKG1vZGUgPT09ICdwcmVzc3VyZScpIHsNCiAgICAgICAgICAgIHAgPSBBZWZmID4gMCA\/IEZkZXNpZ24gLyBBZWZmIDogMDsNCiAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSAnYWxsb3dhYmxlJykgew0KICAgICAgICAgICAgcCA9IDA7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBBcmVxdWlyZWQgPSBwYWxsb3cgPiAwID8gRmRlc2lnbiAvIHBhbGxvdyA6IDA7DQogICAgICAgICAgICBwID0gQWVmZiA+IDAgPyBGZGVzaWduIC8gQWVmZiA6IDA7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgdXRpbGl6YXRpb24gPSBwYWxsb3cgPiAwICYmIG1vZGUgIT09ICdhbGxvd2FibGUnID8gKHAgLyBwYWxsb3cpICogMTAwIDogMDsNCiAgICAgICAgdmFyIGFjdHVhbFNGID0gcCA+IDAgPyBwbWF0ZXJpYWwgLyBwIDogSW5maW5pdHk7DQoNCiAgICAgICAgdmFyIHNwZWVkTXBzID0gcGFyc2VOdW0oZWxzLnNwZWVkLnZhbHVlKTsNCiAgICAgICAgc3BlZWRNcHMgPSBzcGVlZE1wcyAhPT0gbnVsbCA\/IHRvTWV0cmljU3BlZWQoc3BlZWRNcHMpIDogbnVsbDsNCiAgICAgICAgdmFyIHB2ID0gc3BlZWRNcHMgIT09IG51bGwgJiYgcCA+IDAgPyBwICogc3BlZWRNcHMgOiBudWxsOw0KDQogICAgICAgIHZhciB0ZW1wQyA9IHRvTWV0cmljVGVtcChwYXJzZU51bShlbHMudGVtcC52YWx1ZSkpOw0KDQogICAgICAgIC8qIENvbnRhY3Qgc3RhdHVzICovDQogICAgICAgIHZhciBjb250YWN0U3RhdHVzID0gJ1NhZmUnOw0KICAgICAgICBpZiAobW9kZSA9PT0gJ2FsbG93YWJsZScpIHsNCiAgICAgICAgICAgIGNvbnRhY3RTdGF0dXMgPSAnU2FmZSc7DQogICAgICAgIH0gZWxzZSBpZiAodXRpbGl6YXRpb24gPiAxMDApIHsNCiAgICAgICAgICAgIGNvbnRhY3RTdGF0dXMgPSAnT3ZlcmxvYWRlZCc7DQogICAgICAgIH0gZWxzZSBpZiAodXRpbGl6YXRpb24gPj0gODUpIHsNCiAgICAgICAgICAgIGNvbnRhY3RTdGF0dXMgPSAnQ2F1dGlvbic7DQogICAgICAgIH0NCg0KICAgICAgICAvKiBXZWFyIHJpc2sgKi8NCiAgICAgICAgdmFyIGx1YmVGID0gTFVCRV9GQUNUT1JTW2Vscy5sdWJlLnZhbHVlXSB8fCAxOw0KICAgICAgICB2YXIgc1dlYXIgPSAoTUFURVJJQUxfUFJFU1NVUkVbZWxzLnNsaWRlck1hdC52YWx1ZV0gfHwgTUFURVJJQUxfUFJFU1NVUkUuY3VzdG9tKS53ZWFyOw0KICAgICAgICB2YXIgZ1dlYXIgPSAoTUFURVJJQUxfUFJFU1NVUkVbZWxzLmd1aWRlTWF0LnZhbHVlXSB8fCBNQVRFUklBTF9QUkVTU1VSRS5jdXN0b20pLndlYXI7DQogICAgICAgIHZhciBtYXRXZWFyID0gTWF0aC5tYXgoc1dlYXIsIGdXZWFyKTsNCiAgICAgICAgdmFyIHV0aWxGID0gdXRpbGl6YXRpb24gLyAxMDA7DQogICAgICAgIHZhciBzcGVlZEYgPSAxOw0KICAgICAgICBpZiAoc3BlZWRNcHMgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGlmIChzcGVlZE1wcyA+IDIpIHNwZWVkRiA9IDEuNTsNCiAgICAgICAgICAgIGVsc2UgaWYgKHNwZWVkTXBzID4gMC41KSBzcGVlZEYgPSAxLjI7DQogICAgICAgICAgICBlbHNlIGlmIChzcGVlZE1wcyA+IDAuMSkgc3BlZWRGID0gMS4wNTsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgdGVtcEYgPSAxOw0KICAgICAgICBpZiAodGVtcEMgIT09IG51bGwpIHsNCiAgICAgICAgICAgIGlmICh0ZW1wQyA+IDEyMCkgdGVtcEYgPSAxLjQ7DQogICAgICAgICAgICBlbHNlIGlmICh0ZW1wQyA+IDgwKSB0ZW1wRiA9IDEuMTU7DQogICAgICAgIH0NCiAgICAgICAgdmFyIHdlYXJTY29yZSA9IHV0aWxGICogc3BlZWRGICogbHViZUYgKiBtYXRXZWFyICogdGVtcEY7DQogICAgICAgIHZhciB3ZWFyUmlzayA9ICdMb3cnOw0KICAgICAgICBpZiAod2VhclNjb3JlID49IDEuNSB8fCBjb250YWN0U3RhdHVzID09PSAnT3ZlcmxvYWRlZCcpIHdlYXJSaXNrID0gJ0hpZ2gnOw0KICAgICAgICBlbHNlIGlmICh3ZWFyU2NvcmUgPj0gMC44NSB8fCBjb250YWN0U3RhdHVzID09PSAnQ2F1dGlvbicpIHdlYXJSaXNrID0gJ01vZGVyYXRlJzsNCg0KICAgICAgICAvKiBXYXJuaW5ncyAqLw0KICAgICAgICBpZiAobW9kZSA9PT0gJ3ByZXNzdXJlJyAmJiB1dGlsaXphdGlvbiA+IDEwMCkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsDQogICAgICAgICAgICAgICAgdGV4dDogJ0F2ZXJhZ2UgY29udGFjdCBwcmVzc3VyZSBleGNlZWRzIGFsbG93YWJsZSBkZXNpZ24gcHJlc3N1cmUuIEluY3JlYXNlIGNvbnRhY3QgYXJlYSwgYWRkIHBhZHMsIG9yIHVzZSBoaWdoZXItY2FwYWNpdHkgbWF0ZXJpYWxzLicNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIGlmIChldGEgPCAwLjcpIHsNCiAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goew0KICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuJywNCiAgICAgICAgICAgICAgICB0ZXh0OiAnRWZmZWN0aXZlIGNvbnRhY3QgYXJlYSBpcyBzaWduaWZpY2FudGx5IHJlZHVjZWQgKGV0YSA8IDAuNykuIFZlcmlmeSBzdXJmYWNlIGZsYXRuZXNzLCBncm9vdmVzLCBhbmQgbW91bnRpbmcgYWNjdXJhY3kuJw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGtkID4gMS4zKSB7DQogICAgICAgICAgICB3YXJuaW5ncy5wdXNoKHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybicsDQogICAgICAgICAgICAgICAgdGV4dDogJ0hpZ2ggbG9hZCBkaXN0cmlidXRpb24gZmFjdG9yIChLZCA+IDEuMykgaW5kaWNhdGVzIHVuZXZlbiBsb2FkaW5nLiBMb2NhbCBlZGdlIHByZXNzdXJlIG1heSBleGNlZWQgY2FsY3VsYXRlZCBhdmVyYWdlIHByZXNzdXJlLicNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIGlmIChrZCA+IDEuMSAmJiBldGEgPCAwLjg1KSB7DQogICAgICAgICAgICB3YXJuaW5ncy5wdXNoKHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybicsDQogICAgICAgICAgICAgICAgdGV4dDogJ0NvbWJpbmVkIHVuZXZlbiBsb2FkaW5nIGFuZCByZWR1Y2VkIGNvbnRhY3QgYXJlYSBtYXkgY2F1c2Ugc2lnbmlmaWNhbnQgZWRnZSBsb2FkaW5nLiBDb25zaWRlciBpbXByb3ZlZCBhbGlnbm1lbnQgYW5kIHN0aWZmbmVzcy4nDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZWxzLmx1YmUudmFsdWUgPT09ICdkcnknIHx8IGVscy5sdWJlLnZhbHVlID09PSAncG9vcicpIHsNCiAgICAgICAgICAgIGlmIChz<\/span><span class=\"sgcpc-js-chunk\">cGVlZE1wcyAhPT0gbnVsbCAmJiBzcGVlZE1wcyA+IDAuMykgew0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goew0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJywNCiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ1Bvb3Igb3IgZHJ5IGx1YnJpY2F0aW9uIHdpdGggZWxldmF0ZWQgc2xpZGluZyBzcGVlZCBjcmVhdGVzIGhpZ2ggd2VhciBhbmQgdGhlcm1hbCByaXNrLicNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAodXRpbGl6YXRpb24gPiA3MCkgew0KICAgICAgICAgICAgICAgIHdhcm5pbmdzLnB1c2goew0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybicsDQogICAgICAgICAgICAgICAgICAgIHRleHQ6ICdIaWdoIGNvbnRhY3QgcHJlc3N1cmUgd2l0aCBsaW1pdGVkIGx1YnJpY2F0aW9uIGluY3JlYXNlcyB3ZWFyIHJpc2suJw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChwdiAhPT0gbnVsbCAmJiBwdiA+IDEuNSkgew0KICAgICAgICAgICAgd2FybmluZ3MucHVzaCh7DQogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm4nLA0KICAgICAgICAgICAgICAgIHRleHQ6ICdDYWxjdWxhdGVkIFBWID0gJyArIGZtdChwdiwgMikgKyAnIE1QYSBtL3MuIEFsbG93YWJsZSBQViBsaW1pdHMgZGVwZW5kIG9uIG1hdGVyaWFsIHBhaXIsIGx1YnJpY2F0aW9uLCBhbmQgdGVtcGVyYXR1cmUgLSB2ZXJpZnkgd2l0aCBtYW51ZmFjdHVyZXIgZGF0YS4nDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciByZWNvbW1lbmRhdGlvbnMgPSBidWlsZFJlY29tbWVuZGF0aW9ucyh7DQogICAgICAgICAgICBtb2RlOiBtb2RlLA0KICAgICAgICAgICAgY29udGFjdFN0YXR1czogY29udGFjdFN0YXR1cywNCiAgICAgICAgICAgIHV0aWxpemF0aW9uOiB1dGlsaXphdGlvbiwNCiAgICAgICAgICAgIHdlYXJSaXNrOiB3ZWFyUmlzaywNCiAgICAgICAgICAgIGtkOiBrZCwNCiAgICAgICAgICAgIGV0YTogZXRhLA0KICAgICAgICAgICAgbHViZTogZWxzLmx1YmUudmFsdWUsDQogICAgICAgICAgICBzcGVlZE1wczogc3BlZWRNcHMsDQogICAgICAgICAgICBwdjogcHYNCiAgICAgICAgfSk7DQoNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgIG1vZGU6IG1vZGUsDQogICAgICAgICAgICBMbW06IExtbSwNCiAgICAgICAgICAgIFdtbTogV21tLA0KICAgICAgICAgICAgQTogQSwNCiAgICAgICAgICAgIEFlZmY6IEFlZmYsDQogICAgICAgICAgICBuOiBuLA0KICAgICAgICAgICAgZXRhOiBldGEsDQogICAgICAgICAgICBrZDoga2QsDQogICAgICAgICAgICBzZjogc2YsDQogICAgICAgICAgICBwbWF0ZXJpYWw6IHBtYXRlcmlhbCwNCiAgICAgICAgICAgIHBhbGxvdzogcGFsbG93LA0KICAgICAgICAgICAgRnRvdGFsOiBGdG90YWwsDQogICAgICAgICAgICBGcGFkOiBGcGFkLA0KICAgICAgICAgICAgRmRlc2lnbjogRmRlc2lnbiwNCiAgICAgICAgICAgIHA6IHAsDQogICAgICAgICAgICBGYWxsb3dQYWQ6IEZhbGxvd1BhZCwNCiAgICAgICAgICAgIEZhbGxvd1RvdGFsOiBGYWxsb3dUb3RhbCwNCiAgICAgICAgICAgIEFyZXF1aXJlZDogQXJlcXVpcmVkLA0KICAgICAgICAgICAgdXRpbGl6YXRpb246IHV0aWxpemF0aW9uLA0KICAgICAgICAgICAgYWN0dWFsU0Y6IGFjdHVhbFNGLA0KICAgICAgICAgICAgcHY6IHB2LA0KICAgICAgICAgICAgc3BlZWRNcHM6IHNwZWVkTXBzLA0KICAgICAgICAgICAgd2VhclJpc2s6IHdlYXJSaXNrLA0KICAgICAgICAgICAgY29udGFjdFN0YXR1czogY29udGFjdFN0YXR1cywNCiAgICAgICAgICAgIHdhcm5pbmdzOiB3YXJuaW5ncywNCiAgICAgICAgICAgIHJlY29tbWVuZGF0aW9uczogcmVjb21tZW5kYXRpb25zDQogICAgICAgIH07DQogICAgfQ0KDQogICAgZnVuY3Rpb24gYnVpbGRSZWNvbW1lbmRhdGlvbnMocikgew0KICAgICAgICB2YXIgcmVjID0gW107DQogICAgICAgIGlmIChyLmNvbnRhY3RTdGF0dXMgPT09ICdPdmVybG9hZGVkJyB8fCByLnV0aWxpemF0aW9uID4gMTAwKSB7DQogICAgICAgICAgICByZWMucHVzaCgnSW5jcmVhc2UgY29udGFjdCBsZW5ndGggb3Igd2lkdGggdG8gcmVkdWNlIGF2ZXJhZ2UgcHJlc3N1cmUuJyk7DQogICAgICAgICAgICByZWMucHVzaCgnQWRkIG1vcmUgZ3VpZGUgcGFkcyBvciBzbGlkZXJzIHRvIHNoYXJlIHRoZSBsb2FkLicpOw0KICAgICAgICB9DQogICAgICAgIGlmIChyLmtkID4gMS4xNSkgew0KICAgICAgICAgICAgcmVjLnB1c2goJ0ltcHJvdmUgbG9hZCBkaXN0cmlidXRpb24gYW5kIGFsaWdubWVudCB0byByZWR1Y2UgdW5ldmVuIHBhZCBsb2FkaW5nLicpOw0KICAgICAgICB9DQogICAgICAgIGlmIChyLmV0YSA8IDAuODUpIHsNCiAgICAgICAgICAgIHJlYy5wdXNoKCdJbXByb3ZlIHN1cmZhY2UgZmxhdG5lc3MgYW5kIHJlZHVjZSBncm9vdmVzIG9yIHBvY2tldCBhcmVhIGxvc3MuJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHIud2VhclJpc2sgPT09ICdIaWdoJyB8fCByLndlYXJSaXNrID09PSAnTW9kZXJhdGUnKSB7DQogICAgICAgICAgICByZWMucHVzaCgnQ29uc2lkZXIgYSBoaWdoZXItY2FwYWNpdHkgd2VhciBtYXRlcmlhbCBmb3IgdGhlIHdlYWtlciBjb250YWN0IHN1cmZhY2UuJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHIubHViZSA9PT0gJ2xpbWl0ZWQnIHx8IHIubHViZSA9PT0gJ3Bvb3InIHx8IHIubHViZSA9PT0gJ2RyeScpIHsNCiAgICAgICAgICAgIHJlYy5wdXNoKCdJbXByb3ZlIGx1YnJpY2F0aW9uIHVuZGVyIGhpZ2gtcHJlc3N1cmUgc2xpZGluZyBjb25kaXRpb25zLicpOw0KICAgICAgICB9DQogICAgICAgIGlmIChyLnNwZWVkTXBzICE9PSBudWxsICYmIHIuc3BlZWRNcHMgPiAxICYmIHIud2VhclJpc2sgIT09ICdMb3cnKSB7DQogICAgICAgICAgICByZWMucHVzaCgnUmVkdWNlIHNsaWRpbmcgc3BlZWQgaWYgUFYgb3IgdGhlcm1hbCBjb25kaXRpb25zIGFyZSBleGNlc3NpdmUuJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHIua2QgPiAxLjIgfHwgci5ldGEgPCAwLjgpIHsNCiAgICAgICAgICAgIHJlYy5wdXNoKCdSZWR1Y2UgZWRnZSBsb2FkaW5nIHRocm91Z2ggaW1wcm92ZWQgc3RpZmZuZXNzIG9yIG1vdW50aW5nIGFjY3VyYWN5LicpOw0KICAgICAgICB9DQogICAgICAgIGlmIChyLnV0aWxpemF0aW9uID4gODAgJiYgci51dGlsaXphdGlvbiA8PSAxMDApIHsNCiAgICAgICAgICAgIHJlYy5wdXNoKCdJbmNyZWFzZSBzYWZldHkgZmFjdG9yIGZvciBpbXBhY3QsIHZpYnJhdGlvbiwgb3IgdW5jZXJ0YWluIGxvYWRpbmcuJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHIua2QgPiAxLjI1KSB7DQogICAgICAgICAgICByZWMucHVzaCgnVmVyaWZ5IGxvY2FsIGNvbnRhY3Qgc3RyZXNzZXMgd2hlbiBsb2FkIGlzIGhpZ2hseSBjb25jZW50cmF0ZWQuJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHJlYy5sZW5ndGggPT09IDApIHsNCiAgICAgICAgICAgIHJlYy5wdXNoKCdDdXJyZW50IGNvbnRhY3QgcHJlc3N1cmUgaXMgd2l0aGluIHR5cGljYWwgcHJlbGltaW5hcnkgbGltaXRzLiBDb25maXJtIHdpdGggbWFudWZhY3R1cmVyIGRhdGEgZm9yIGZpbmFsIGRlc2lnbi4nKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcmVjOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHJpc2tDbGFzcyhsZXZlbCkgew0KICAgICAgICBpZiAobGV2ZWwgPT09ICdMb3cnIHx8IGxldmVsID09PSAnU2FmZScpIHJldHVybiAnc2djcGMtcmlzay1sb3cnOw0KICAgICAgICBpZiAobGV2ZWwgPT09ICdNb2RlcmF0ZScgfHwgbGV2ZWwgPT09ICdDYXV0aW9uJykgcmV0dXJuICdzZ2NwYy1yaXNrLW1vZGVyYXRlJzsNCiAgICAgICAgcmV0dXJuICdzZ2NwYy1yaXNrLWhpZ2gnOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHN0YXR1c0Jhbm5lckNsYXNzKHN0YXR1cykgew0KICAgICAgICBpZiAoc3RhdHVzID09PSAnU2FmZScpIHJldHVybiAnc2djcGMtc3RhdHVzLXNhZmUnOw0KICAgICAgICBpZiAoc3RhdHVzID09PSAnQ2F1dGlvbicpIHJldHVybiAnc2djcGMtc3RhdHVzLWNhdXRpb24nOw0KICAgICAgICByZXR1cm4gJ3NnY3BjLXN0YXR1cy1vdmVybG9hZCc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc3RhdHVzSWNvbihzdGF0dXMpIHsNCiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ1NhZmUnKSByZXR1cm4gJysnOw0KICAgICAgICBpZiAoc3RhdHVzID09PSAnQ2F1dGlvbicpIHJldHVybiAnISc7DQogICAgICAgIHJldHVybiAnWCc7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZGlzcGxheVdhcm5pbmdzKHdhcm5pbmdzKSB7DQogICAgICAgIGlmICghZWxzLndhcm5pbmdzKSByZXR1cm47DQogICAgICAgIGVscy53YXJuaW5ncy5pbm5lckhUTUwgPSAnJzsNCiAgICAgICAgd2FybmluZ3MuZm9yRWFjaChmdW5jdGlvbiAodykgew0KICAgICAgICAgICAgdmFyIGRpdiA9IGRv<\/span><span class=\"sgcpc-js-chunk\">Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdzZ2NwYy13YXJuaW5nLWl0ZW0nICsgKHcudHlwZSA9PT0gJ2RhbmdlcicgPyAnIHNnY3BjLXdhcm5pbmctZGFuZ2VyJyA6ICcnKTsNCiAgICAgICAgICAgIGRpdi50ZXh0Q29udGVudCA9IHcudGV4dDsNCiAgICAgICAgICAgIGVscy53YXJuaW5ncy5hcHBlbmRDaGlsZChkaXYpOw0KICAgICAgICB9KTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB1cGRhdGVHYXVnZSh1dGlsaXphdGlvbikgew0KICAgICAgICBpZiAoIWVscy5nYXVnZUFyYyB8fCAhZWxzLmdhdWdlTmVlZGxlKSByZXR1cm47DQogICAgICAgIHZhciBwY3QgPSBjbGFtcCh1dGlsaXphdGlvbiwgMCwgMTUwKSAvIDE1MDsNCiAgICAgICAgZWxzLmdhdWdlQXJjLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnLCBTdHJpbmcoR0FVR0VfQVJDICogKDEgLSBwY3QpKSk7DQogICAgICAgIHZhciBhbmdsZSA9IC05MCArIHBjdCAqIDE4MDsNCiAgICAgICAgZWxzLmdhdWdlTmVlZGxlLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3JvdGF0ZSgnICsgYW5nbGUgKyAnIDEyMCAxMTgpJyk7DQogICAgICAgIGlmIChlbHMuZ2F1Z2VSZWFkKSB7DQogICAgICAgICAgICBlbHMuZ2F1Z2VSZWFkLnRleHRDb250ZW50ID0gaXNGaW5pdGUodXRpbGl6YXRpb24pID8gZm10KHV0aWxpemF0aW9uLCAxKSArICclJyA6IE5BOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdXBkYXRlVXRpbEJhcih1dGlsaXphdGlvbikgew0KICAgICAgICBpZiAoIWVscy51dGlsRmlsbCkgcmV0dXJuOw0KICAgICAgICB2YXIgdyA9IGNsYW1wKHV0aWxpemF0aW9uLCAwLCAxMjApOw0KICAgICAgICBlbHMudXRpbEZpbGwuc3R5bGUud2lkdGggPSB3ICsgJyUnOw0KICAgICAgICBlbHMudXRpbEZpbGwuY2xhc3NOYW1lID0gJ3NnY3BjLXV0aWwtZmlsbCcgKw0KICAgICAgICAgICAgKHV0aWxpemF0aW9uID4gMTAwID8gJyBzZ2NwYy11dGlsLW92ZXInIDogdXRpbGl6YXRpb24gPj0gODUgPyAnIHNnY3BjLXV0aWwtY2F1dGlvbicgOiAnJyk7DQogICAgICAgIGlmIChlbHMub3V0VXRpbCkgZWxzLm91dFV0aWwudGV4dENvbnRlbnQgPSBmbXQodXRpbGl6YXRpb24sIDEpICsgJyUnOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHVwZGF0ZUhlYXRtYXAodXRpbGl6YXRpb24sIGtkLCBldGEpIHsNCiAgICAgICAgaWYgKCFlbHMuaGVhdG1hcENlbGxzKSByZXR1cm47DQogICAgICAgIHZhciBjZWxscyA9IGVscy5oZWF0bWFwQ2VsbHMucXVlcnlTZWxlY3RvckFsbCgnLnNnY3BjLWhtLWNlbGwnKTsNCiAgICAgICAgdmFyIGVkZ2VCb29zdCA9IGtkID4gMS4yID8gMS4zNSA6IGtkID4gMS4wNSA\/IDEuMTUgOiAxOw0KICAgICAgICB2YXIgY2VudGVyRmFjdG9yID0gZXRhIDwgMC44ID8gMC44NSA6IDE7DQogICAgICAgIHZhciBiYXNlID0gdXRpbGl6YXRpb24gLyAxMDA7DQogICAgICAgIHZhciBwb3NpdGlvbnMgPSBbDQogICAgICAgICAgICBbMCwgMF0sIFsxLCAwXSwgWzIsIDBdLA0KICAgICAgICAgICAgWzAsIDFdLCBbMSwgMV0sIFsyLCAxXSwNCiAgICAgICAgICAgIFswLCAyXSwgWzEsIDJdLCBbMiwgMl0NCiAgICAgICAgXTsNCiAgICAgICAgY2VsbHMuZm9yRWFjaChmdW5jdGlvbiAoY2VsbCwgaSkgew0KICAgICAgICAgICAgdmFyIHJvdyA9IHBvc2l0aW9uc1tpXVsxXTsNCiAgICAgICAgICAgIHZhciBjb2wgPSBwb3NpdGlvbnNbaV1bMF07DQogICAgICAgICAgICB2YXIgaXNFZGdlID0gcm93ID09PSAwIHx8IHJvdyA9PT0gMiB8fCBjb2wgPT09IDAgfHwgY29sID09PSAyOw0KICAgICAgICAgICAgdmFyIGlzQ29ybmVyID0gKHJvdyA9PT0gMCB8fCByb3cgPT09IDIpICYmIChjb2wgPT09IDAgfHwgY29sID09PSAyKTsNCiAgICAgICAgICAgIHZhciBsb2NhbCA9IGJhc2UgKiBjZW50ZXJGYWN0b3I7DQogICAgICAgICAgICBpZiAoaXNFZGdlKSBsb2NhbCAqPSBlZGdlQm9vc3Q7DQogICAgICAgICAgICBpZiAoaXNDb3JuZXIpIGxvY2FsICo9IDEuMTsNCiAgICAgICAgICAgIGxvY2FsID0gY2xhbXAobG9jYWwsIDAsIDEuNSk7DQogICAgICAgICAgICB2YXIgaHVlID0gbG9jYWwgPD0gMC44NSA\/IDE0NSA6IGxvY2FsIDw9IDEgPyA0NSA6IDA7DQogICAgICAgICAgICB2YXIgc2F0ID0gNzA7DQogICAgICAgICAgICB2YXIgbGlnaHQgPSBsb2NhbCA8PSAwLjg1ID8gNDUgKyAoMSAtIGxvY2FsKSAqIDE1IDogNTAgLSAobG9jYWwgLSAwLjg1KSAqIDMwOw0KICAgICAgICAgICAgY2VsbC5zdHlsZS5iYWNrZ3JvdW5kID0gJ2hzbCgnICsgaHVlICsgJywnICsgc2F0ICsgJyUsJyArIGNsYW1wKGxpZ2h0LCAyNSwgNTUpICsgJyUpJzsNCiAgICAgICAgICAgIGNlbGwuc3R5bGUub3BhY2l0eSA9ICcwLjg1JzsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdXBkYXRlU2NoZW1hdGljKHIpIHsNCiAgICAgICAgaWYgKCFlbHMuc2NoZW1hdGljKSByZXR1cm47DQogICAgICAgIGVscy5zY2hlbWF0aWMuc2V0QXR0cmlidXRlKCdkYXRhLXN0YXR1cycsIHIuY29udGFjdFN0YXR1cy50b0xvd2VyQ2FzZSgpKTsNCiAgICAgICAgZWxzLnNjaGVtYXRpYy5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGFkcycsIFN0cmluZyhNYXRoLm1pbihyLm4sIDQpKSk7DQoNCiAgICAgICAgaWYgKGVscy5zY2hMZW5ndGgpIHsNCiAgICAgICAgICAgIGVscy5zY2hMZW5ndGgudGV4dENvbnRlbnQgPSBmbXQoZnJvbU1ldHJpY0xlbmd0aChyLkxtbSksIHN0YXRlLnVuaXQgPT09ICdtZXRyaWMnID8gMCA6IDIpICsgJyAnICsgZ2V0TGVuZ3RoVW5pdCgpOw0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMuc2NoV2lkdGgpIHsNCiAgICAgICAgICAgIGVscy5zY2hXaWR0aC50ZXh0Q29udGVudCA9IGZtdChmcm9tTWV0cmljTGVuZ3RoKHIuV21tKSwgc3RhdGUudW5pdCA9PT0gJ21ldHJpYycgPyAwIDogMikgKyAnICcgKyBnZXRMZW5ndGhVbml0KCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVscy5zY2hGb3JjZSkgew0KICAgICAgICAgICAgaWYgKHIubW9kZSA9PT0gJ2FsbG93YWJsZScpIHsNCiAgICAgICAgICAgICAgICBlbHMuc2NoRm9yY2UudGV4dENvbnRlbnQgPSAnRmFsbG93ID0gJyArIGZtdChmcm9tTWV0cmljRm9yY2Uoci5GYWxsb3dUb3RhbCwgZWxzLmxvYWRVbml0LnZhbHVlKSwgMSkgKyAnICcgKyBlbHMubG9hZFVuaXQudmFsdWU7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVscy5zY2hGb3JjZS50ZXh0Q29udGVudCA9ICdGID0gJyArIGZtdChmcm9tTWV0cmljRm9yY2Uoci5GdG90YWwsIGVscy5sb2FkVW5pdC52YWx1ZSksIDEpICsgJyAnICsgZWxzLmxvYWRVbml0LnZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMuc2NoUGFkcykgew0KICAgICAgICAgICAgZWxzLnNjaFBhZHMudGV4dENvbnRlbnQgPSByLm4gKyAnIHBhZCcgKyAoci5uID4gMSA\/ICdzJyA6ICcnKSArIFNFUCArICdLZCA9ICcgKyBmbXQoci5rZCwgMik7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgcGFkR3JvdXAgPSAkKCdzZ2NwY1BhZEdyb3VwJyk7DQogICAgICAgIGlmIChwYWRHcm91cCkgew0KICAgICAgICAgICAgcGFkR3JvdXAuaW5uZXJIVE1MID0gJyc7DQogICAgICAgICAgICB2YXIgY291bnQgPSBNYXRoLm1pbihNYXRoLm1heChyLm4sIDEpLCA0KTsNCiAgICAgICAgICAgIHZhciBzdGFydFggPSAxMDAgLSAoY291bnQgLSAxKSAqIDIyOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2cnKTsNCiAgICAgICAgICAgICAgICB2YXIgcnggPSBzdGFydFggKyBpICogNDQ7DQogICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3JlY3QnKTsNCiAgICAgICAgICAgICAgICByZWN0LnNldEF0dHJpYnV0ZSgneCcsIFN0cmluZyhyeCAtIDE2KSk7DQogICAgICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3knLCAnMTQ4Jyk7DQogICAgICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzMyJyk7DQogICAgICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICcxMCcpOw0KICAgICAgICAgICAgICAgIHJlY3Quc2V0QXR0cmlidXRlKCdyeCcsICcxJyk7DQogICAgICAgICAgICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3NnY3BjLXNjaC1wYWQnKTsNCiAgICAgICAgICAgICAgICB2YXIgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2xpbmUnKTsNCiAgICAgICAgICAgICAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoJ3gxJywgU3RyaW5nKHJ4KSk7<\/span><span class=\"sgcpc-js-chunk\">DQogICAgICAgICAgICAgICAgYXJyb3cuc2V0QXR0cmlidXRlKCd5MScsICcxMzInKTsNCiAgICAgICAgICAgICAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoJ3gyJywgU3RyaW5nKHJ4KSk7DQogICAgICAgICAgICAgICAgYXJyb3cuc2V0QXR0cmlidXRlKCd5MicsICcxNDUnKTsNCiAgICAgICAgICAgICAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3NnY3BjLXNjaC1mb3JjZS1kb3duJyk7DQogICAgICAgICAgICAgICAgdmFyIGhlYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BvbHlnb24nKTsNCiAgICAgICAgICAgICAgICBoZWFkLnNldEF0dHJpYnV0ZSgncG9pbnRzJywgKHJ4IC0gNCkgKyAnLDE0MiAnICsgcnggKyAnLDE0OCAnICsgKHJ4ICsgNCkgKyAnLDE0MicpOw0KICAgICAgICAgICAgICAgIGhlYWQuc2V0QXR0cmlidXRlKCdjbGFzcycsICdzZ2NwYy1zY2gtYXJyb3cnKTsNCiAgICAgICAgICAgICAgICBnLmFwcGVuZENoaWxkKHJlY3QpOw0KICAgICAgICAgICAgICAgIGcuYXBwZW5kQ2hpbGQoYXJyb3cpOw0KICAgICAgICAgICAgICAgIGcuYXBwZW5kQ2hpbGQoaGVhZCk7DQogICAgICAgICAgICAgICAgcGFkR3JvdXAuYXBwZW5kQ2hpbGQoZyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmdW5jdGlvbiBkaXNwbGF5UmVzdWx0cyhyKSB7DQogICAgICAgIGlmICghcikgew0KICAgICAgICAgICAgaGlkZVNlY3Rpb24oZWxzLnJlc3VsdHMpOw0KICAgICAgICAgICAgc3RhdGUucmVzdWx0c1Nob3duID0gZmFsc2U7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBzaG93U2VjdGlvbihlbHMucmVzdWx0cyk7DQogICAgICAgIHN0YXRlLnJlc3VsdHNTaG93biA9IHRydWU7DQogICAgICAgIGRpc3BsYXlXYXJuaW5ncyhyLndhcm5pbmdzKTsNCg0KICAgICAgICB2YXIgc3RhdHVzID0gci5tb2RlID09PSAnYWxsb3dhYmxlJyA\/ICdTYWZlJyA6IHIuY29udGFjdFN0YXR1czsNCiAgICAgICAgaWYgKGVscy5zdGF0dXNCYW5uZXIpIHsNCiAgICAgICAgICAgIGVscy5zdGF0dXNCYW5uZXIuY2xhc3NOYW1lID0gJ3NnY3BjLXN0YXR1cy1iYW5uZXIgJyArIHN0YXR1c0Jhbm5lckNsYXNzKHN0YXR1cyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVscy5zdGF0dXNJY29uKSBlbHMuc3RhdHVzSWNvbi50ZXh0Q29udGVudCA9IHN0YXR1c0ljb24oc3RhdHVzKTsNCiAgICAgICAgaWYgKGVscy5zdGF0dXNUaXRsZSkgew0KICAgICAgICAgICAgZWxzLnN0YXR1c1RpdGxlLnRleHRDb250ZW50ID0gJ0NvbnRhY3QgU3RhdHVzOiAnICsgKHIubW9kZSA9PT0gJ2FsbG93YWJsZScgPyAnQWxsb3dhYmxlIExvYWQgQ2FsY3VsYXRlZCcgOiByLmNvbnRhY3RTdGF0dXMpOw0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMuc3RhdHVzU3ViKSB7DQogICAgICAgICAgICBlbHMuc3RhdHVzU3ViLnRleHRDb250ZW50ID0gci53ZWFyUmlzayArICcgd2VhciByaXNrJyArIFNFUCArICdVdGlsaXphdGlvbiAnICsgZm10KHIudXRpbGl6YXRpb24sIDEpICsgJyUnICsgU0VQICsgJ1NGICcgKw0KICAgICAgICAgICAgICAgIChpc0Zpbml0ZShyLmFjdHVhbFNGKSA\/IGZtdChyLmFjdHVhbFNGLCAyKSA6IE5BKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChlbHMub3V0Tm9taW5hbEFyZWEpIGVscy5vdXROb21pbmFsQXJlYS50ZXh0Q29udGVudCA9IHIuQSA+IDAgPyBmb3JtYXRBcmVhKHIuQSkgOiBOQTsNCiAgICAgICAgaWYgKGVscy5vdXRFZmZBcmVhKSBlbHMub3V0RWZmQXJlYS50ZXh0Q29udGVudCA9IHIuQWVmZiA+IDAgPyBmb3JtYXRBcmVhKHIuQWVmZikgOiBOQTsNCiAgICAgICAgaWYgKGVscy5vdXRGcGFkKSBlbHMub3V0RnBhZC50ZXh0Q29udGVudCA9IHIubW9kZSAhPT0gJ2FsbG93YWJsZScgPyBmb3JtYXRGb3JjZShyLkZwYWQsIHRydWUpIDogTkE7DQogICAgICAgIGlmIChlbHMub3V0RmRlc2lnbikgZWxzLm91dEZkZXNpZ24udGV4dENvbnRlbnQgPSByLm1vZGUgIT09ICdhbGxvd2FibGUnID8gZm9ybWF0Rm9yY2Uoci5GZGVzaWduLCB0cnVlKSA6IE5BOw0KICAgICAgICBpZiAoZWxzLm91dFByZXNzdXJlKSB7DQogICAgICAgICAgICBlbHMub3V0UHJlc3N1cmUudGV4dENvbnRlbnQgPSByLm1vZGUgIT09ICdhbGxvd2FibGUnICYmIHIucCA+IDAgPyBmb3JtYXRQcmVzc3VyZShyLnApIDogKHIubW9kZSA9PT0gJ2FsbG93YWJsZScgPyBOQSA6ICcwJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVscy5vdXRQYWxsb3cpIGVscy5vdXRQYWxsb3cudGV4dENvbnRlbnQgPSBmb3JtYXRQcmVzc3VyZShyLnBhbGxvdyk7DQogICAgICAgIGlmIChlbHMub3V0RmFsbG93KSBlbHMub3V0RmFsbG93LnRleHRDb250ZW50ID0gZm9ybWF0Rm9yY2Uoci5GYWxsb3dUb3RhbCwgdHJ1ZSk7DQogICAgICAgIGlmIChlbHMub3V0QXJlYVJlcSkgew0KICAgICAgICAgICAgZWxzLm91dEFyZWFSZXEudGV4dENvbnRlbnQgPSByLm1vZGUgPT09ICdyZXF1aXJlZCcgPyBmb3JtYXRBcmVhKHIuQXJlcXVpcmVkKSA6DQogICAgICAgICAgICAgICAgKHIuQWVmZiA+IDAgJiYgci51dGlsaXphdGlvbiA+IDEwMCA\/IGZvcm1hdEFyZWEoci5GZGVzaWduIC8gci5wYWxsb3cpICsgJyAoc3VnZ2VzdGVkKScgOiBOQSk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKGVscy5vdXRVdGlsKSB7DQogICAgICAgICAgICB2YXIgdXRpbFRleHQgPSByLm1vZGUgPT09ICdhbGxvd2FibGUnID8gTkEgOiBmbXQoci51dGlsaXphdGlvbiwgMSkgKyAnJSc7DQogICAgICAgICAgICBlbHMub3V0VXRpbC50ZXh0Q29udGVudCA9IHV0aWxUZXh0Ow0KICAgICAgICAgICAgZWxzLm91dFV0aWwuY2xhc3NOYW1lID0gJ3NnY3BjLXJlc3VsdC12YWx1ZSBzZ2NwYy1vdXQtdXRpbCAnICsgcmlza0NsYXNzKA0KICAgICAgICAgICAgICAgIHIudXRpbGl6YXRpb24gPiAxMDAgPyAnT3ZlcmxvYWRlZCcgOiByLnV0aWxpemF0aW9uID49IDg1ID8gJ0NhdXRpb24nIDogJ1NhZmUnDQogICAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMub3V0U0YpIHsNCiAgICAgICAgICAgIGVscy5vdXRTRi50ZXh0Q29udGVudCA9IGlzRmluaXRlKHIuYWN0dWFsU0YpICYmIHIubW9kZSAhPT0gJ2FsbG93YWJsZScgPyBmbXQoci5hY3R1YWxTRiwgMikgOiBOQTsNCiAgICAgICAgICAgIGVscy5vdXRTRi5jbGFzc05hbWUgPSAnc2djcGMtcmVzdWx0LXZhbHVlIHNnY3BjLW91dC1zZiAnICsgcmlza0NsYXNzKA0KICAgICAgICAgICAgICAgIHIuYWN0dWFsU0YgPj0gci5zZiA\/ICdTYWZlJyA6IHIuYWN0dWFsU0YgPj0gMSA\/ICdDYXV0aW9uJyA6ICdPdmVybG9hZGVkJw0KICAgICAgICAgICAgKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoZWxzLm91dFBWKSB7DQogICAgICAgICAgICBpZiAoci5wdiAhPT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIGlmIChzdGF0ZS51bml0ID09PSAnbWV0cmljJykgew0KICAgICAgICAgICAgICAgICAgICBlbHMub3V0UFYudGV4dENvbnRlbnQgPSBmbXQoci5wdiwgMykgKyAnIE1QYSBtL3MnOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGVscy5vdXRQVi50ZXh0Q29udGVudCA9IGZtdChyLnAgKiBNUEFfVE9fUFNJLCAxKSArICcgcHNpIHggJyArDQogICAgICAgICAgICAgICAgICAgICAgICBmbXQoZnJvbU1ldHJpY1NwZWVkKHIuc3BlZWRNcHMpLCAxKSArICcgZnQvbWluJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVscy5vdXRQVi50ZXh0Q29udGVudCA9IE5BICsgJyAoZW50ZXIgc2xpZGluZyBzcGVlZCknOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMub3V0V2Vhcikgew0KICAgICAgICAgICAgZWxzLm91dFdlYXIudGV4dENvbnRlbnQgPSByLndlYXJSaXNrOw0KICAgICAgICAgICAgZWxzLm91dFdlYXIuY2xhc3NOYW1lID0gJ3NnY3BjLXJlc3VsdC12YWx1ZSBzZ2NwYy1vdXQtd2VhciAnICsgcmlza0NsYXNzKHIud2VhclJpc2spOw0KICAgICAgICB9DQogICAgICAgIGlmIChlbHMub3V0U3RhdHVzKSB7DQogICAgICAgICAgICBlbHMub3V0U3RhdHVzLnRleHRDb250ZW50ID0gci5tb2RlID09PSAnYWxsb3dhYmxlJyA\/ICdOL0EnIDogci5jb250YWN0U3RhdHVzOw0KICAgICAgICAgICAgZWxzLm91dFN0YXR1cy5jbGFzc05hbWUgPSAnc2djcGMtcmVzdWx0LXZhbHVlIHNnY3BjLW91dC1zdGF0dXMgJyArIHJpc2tDbGFzcyhyLmNvbnRhY3RTdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGVscy5oZXJvUHJlc3N1cmUpIHsNCiAgICAgICAgICAgIGlmIChyLm1vZGUgPT09ICdhbGxvd2FibGUnKSB7DQogICAgICAgICAgICAgICAgZWxzLmhlcm9QcmVzc3VyZS50ZXh0Q29udGVudCA9IGZvcm1hdEZvcmNlKHIuRmFsbG93VG90YWwsIGZhbHNlKTsNCiAgICAg<\/span><span class=\"sgcpc-js-chunk\">ICAgICAgICAgICBpZiAoZWxzLmhlcm9QcmVzc3VyZUxhYmVsKSBlbHMuaGVyb1ByZXNzdXJlTGFiZWwudGV4dENvbnRlbnQgPSAnTWF4aW11bSBBbGxvd2FibGUgTG9hZCc7DQogICAgICAgICAgICAgICAgaWYgKGVscy5oZXJvUHJlc3N1cmVTdWIpIGVscy5oZXJvUHJlc3N1cmVTdWIudGV4dENvbnRlbnQgPSAnRmFsbG93LHRvdGFsID0gcGFsbG93IHggQWVmZiB4IG4gLyBLZCc7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVscy5oZXJvUHJlc3N1cmUudGV4dENvbnRlbnQgPSBmb3JtYXRQcmVzc3VyZShyLnApOw0KICAgICAgICAgICAgICAgIGlmIChlbHMuaGVyb1ByZXNzdXJlTGFiZWwpIGVscy5oZXJvUHJlc3N1cmVMYWJlbC50ZXh0Q29udGVudCA9ICdBdmVyYWdlIENvbnRhY3QgUHJlc3N1cmUnOw0KICAgICAgICAgICAgICAgIGlmIChlbHMuaGVyb1ByZXNzdXJlU3ViKSBlbHMuaGVyb1ByZXNzdXJlU3ViLnRleHRDb250ZW50ID0gJ3AgPSBGZGVzaWduIC8gQWVmZic7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB1cGRhdGVHYXVnZShyLm1vZGUgPT09ICdhbGxvd2FibGUnID8gMCA6IHIudXRpbGl6YXRpb24pOw0KICAgICAgICB1cGRhdGVVdGlsQmFyKHIubW9kZSA9PT0gJ2FsbG93YWJsZScgPyAwIDogci51dGlsaXphdGlvbik7DQogICAgICAgIHVwZGF0ZUhlYXRtYXAoci51dGlsaXphdGlvbiwgci5rZCwgci5ldGEpOw0KICAgICAgICB1cGRhdGVTY2hlbWF0aWMocik7DQoNCiAgICAgICAgaWYgKGVscy5yZWNvbW1lbmRhdGlvbnMpIHsNCiAgICAgICAgICAgIGVscy5yZWNvbW1lbmRhdGlvbnMuaW5uZXJIVE1MID0gJyc7DQogICAgICAgICAgICByLnJlY29tbWVuZGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh0ZXh0KSB7DQogICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsNCiAgICAgICAgICAgICAgICBsaS50ZXh0Q29udGVudCA9IHRleHQ7DQogICAgICAgICAgICAgICAgZWxzLnJlY29tbWVuZGF0aW9ucy5hcHBlbmRDaGlsZChsaSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHsNCiAgICAgICAgZGlzcGxheVJlc3VsdHModmFsaWRhdGVBbmRDYWxjdWxhdGUoKSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gYmluZEVsZW1lbnRzKCkgew0KICAgICAgICBlbHMgPSB7DQogICAgICAgICAgICBtb2RlOiAkKCdzZ2NwY01vZGUnKSwNCiAgICAgICAgICAgIGNvbnRhY3RUeXBlOiAkKCdzZ2NwY0NvbnRhY3RUeXBlJyksDQogICAgICAgICAgICBsZW5ndGg6ICQoJ3NnY3BjTGVuZ3RoJyksDQogICAgICAgICAgICB3aWR0aDogJCgnc2djcGNXaWR0aCcpLA0KICAgICAgICAgICAgcGFkczogJCgnc2djcGNQYWRzJyksDQogICAgICAgICAgICBldGE6ICQoJ3NnY3BjRXRhJyksDQogICAgICAgICAgICBsb2FkOiAkKCdzZ2NwY0xvYWQnKSwNCiAgICAgICAgICAgIGxvYWRVbml0OiAkKCdzZ2NwY0xvYWRVbml0JyksDQogICAgICAgICAgICBrZDogJCgnc2djcGNLZCcpLA0KICAgICAgICAgICAgc2xpZGVyTWF0OiAkKCdzZ2NwY1NsaWRlck1hdCcpLA0KICAgICAgICAgICAgZ3VpZGVNYXQ6ICQoJ3NnY3BjR3VpZGVNYXQnKSwNCiAgICAgICAgICAgIHBSZWY6ICQoJ3NnY3BjUFJlZicpLA0KICAgICAgICAgICAgcFJlZlVuaXQ6ICQoJ3NnY3BjUFJlZlVuaXQnKSwNCiAgICAgICAgICAgIHNmOiAkKCdzZ2NwY1NmJyksDQogICAgICAgICAgICBsdWJlOiAkKCdzZ2NwY0x1YmUnKSwNCiAgICAgICAgICAgIHNwZWVkOiAkKCdzZ2NwY1NwZWVkJyksDQogICAgICAgICAgICB0ZW1wOiAkKCdzZ2NwY1RlbXAnKSwNCiAgICAgICAgICAgIG1vZGVOb3RlOiAkKCdzZ2NwY01vZGVOb3RlJyksDQogICAgICAgICAgICBtYXRlcmlhbEhpbnQ6ICQoJ3NnY3BjTWF0ZXJpYWxIaW50JyksDQogICAgICAgICAgICB3YXJuaW5nczogJCgnc2djcGNXYXJuaW5ncycpLA0KICAgICAgICAgICAgcmVzdWx0czogJCgnc2djcGNSZXN1bHRzJyksDQogICAgICAgICAgICBzdGF0dXNCYW5uZXI6ICQoJ3NnY3BjU3RhdHVzQmFubmVyJyksDQogICAgICAgICAgICBzdGF0dXNJY29uOiAkKCdzZ2NwY1N0YXR1c0ljb24nKSwNCiAgICAgICAgICAgIHN0YXR1c1RpdGxlOiAkKCdzZ2NwY1N0YXR1c1RpdGxlJyksDQogICAgICAgICAgICBzdGF0dXNTdWI6ICQoJ3NnY3BjU3RhdHVzU3ViJyksDQogICAgICAgICAgICBoZXJvUHJlc3N1cmU6ICQoJ3NnY3BjSGVyb1ByZXNzdXJlJyksDQogICAgICAgICAgICBoZXJvUHJlc3N1cmVMYWJlbDogJCgnc2djcGNIZXJvUHJlc3N1cmVMYWJlbCcpLA0KICAgICAgICAgICAgaGVyb1ByZXNzdXJlU3ViOiAkKCdzZ2NwY0hlcm9QcmVzc3VyZVN1YicpLA0KICAgICAgICAgICAgb3V0Tm9taW5hbEFyZWE6ICQoJ3NnY3BjT3V0Tm9taW5hbEFyZWEnKSwNCiAgICAgICAgICAgIG91dEVmZkFyZWE6ICQoJ3NnY3BjT3V0RWZmQXJlYScpLA0KICAgICAgICAgICAgb3V0RnBhZDogJCgnc2djcGNPdXRGcGFkJyksDQogICAgICAgICAgICBvdXRGZGVzaWduOiAkKCdzZ2NwY091dEZkZXNpZ24nKSwNCiAgICAgICAgICAgIG91dFByZXNzdXJlOiAkKCdzZ2NwY091dFByZXNzdXJlJyksDQogICAgICAgICAgICBvdXRQYWxsb3c6ICQoJ3NnY3BjT3V0UGFsbG93JyksDQogICAgICAgICAgICBvdXRGYWxsb3c6ICQoJ3NnY3BjT3V0RmFsbG93JyksDQogICAgICAgICAgICBvdXRBcmVhUmVxOiAkKCdzZ2NwY091dEFyZWFSZXEnKSwNCiAgICAgICAgICAgIG91dFV0aWw6ICQoJ3NnY3BjT3V0VXRpbCcpLA0KICAgICAgICAgICAgb3V0U0Y6ICQoJ3NnY3BjT3V0U0YnKSwNCiAgICAgICAgICAgIG91dFBWOiAkKCdzZ2NwY091dFBWJyksDQogICAgICAgICAgICBvdXRXZWFyOiAkKCdzZ2NwY091dFdlYXInKSwNCiAgICAgICAgICAgIG91dFN0YXR1czogJCgnc2djcGNPdXRTdGF0dXMnKSwNCiAgICAgICAgICAgIGdhdWdlQXJjOiAkKCdzZ2NwY0dhdWdlQXJjJyksDQogICAgICAgICAgICBnYXVnZU5lZWRsZTogJCgnc2djcGNHYXVnZU5lZWRsZScpLA0KICAgICAgICAgICAgZ2F1Z2VSZWFkOiAkKCdzZ2NwY0dhdWdlUmVhZCcpLA0KICAgICAgICAgICAgdXRpbEZpbGw6ICQoJ3NnY3BjVXRpbEZpbGwnKSwNCiAgICAgICAgICAgIGhlYXRtYXBDZWxsczogJCgnc2djcGNIZWF0bWFwJyksDQogICAgICAgICAgICBzY2hlbWF0aWM6ICQoJ3NnY3BjU2NoZW1hdGljJyksDQogICAgICAgICAgICBzY2hMZW5ndGg6ICQoJ3NnY3BjU2NoTGVuZ3RoJyksDQogICAgICAgICAgICBzY2hXaWR0aDogJCgnc2djcGNTY2hXaWR0aCcpLA0KICAgICAgICAgICAgc2NoRm9yY2U6ICQoJ3NnY3BjU2NoRm9yY2UnKSwNCiAgICAgICAgICAgIHNjaFBhZHM6ICQoJ3NnY3BjU2NoUGFkcycpLA0KICAgICAgICAgICAgcmVjb21tZW5kYXRpb25zOiAkKCdzZ2NwY1JlY29tbWVuZGF0aW9ucycpLA0KICAgICAgICAgICAgY2FsY3VsYXRlQnRuOiAkKCdzZ2NwY0NhbGN1bGF0ZUJ0bicpLA0KICAgICAgICAgICAgcmVzZXRCdG46ICQoJ3NnY3BjUmVzZXRCdG4nKSwNCiAgICAgICAgICAgIHVuaXRSYWRpb3M6IHJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0ic2djcGMtdW5pdFN5c3RlbSJdJykNCiAgICAgICAgfTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBhcHBseURlZmF1bHRzKCkgew0KICAgICAgICBzdGF0ZSA9IHsgdW5pdDogREVGQVVMVFMudW5pdCwgcFJlZk1hbnVhbDogZmFsc2UsIHJlc3VsdHNTaG93bjogZmFsc2UgfTsNCiAgICAgICAgZWxzLm1vZGUudmFsdWUgPSBERUZBVUxUUy5tb2RlOw0KICAgICAgICBlbHMuY29udGFjdFR5cGUudmFsdWUgPSBERUZBVUxUUy5jb250YWN0VHlwZTsNCiAgICAgICAgZWxzLmxlbmd0aC52YWx1ZSA9IERFRkFVTFRTLmxlbmd0aDsNCiAgICAgICAgZWxzLndpZHRoLnZhbHVlID0gREVGQVVMVFMud2lkdGg7DQogICAgICAgIGVscy5wYWRzLnZhbHVlID0gREVGQVVMVFMucGFkczsNCiAgICAgICAgZWxzLmV0YS52YWx1ZSA9IERFRkFVTFRTLmV0YTsNCiAgICAgICAgZWxzLmxvYWQudmFsdWUgPSBERUZBVUxUUy5sb2FkOw0KICAgICAgICBlbHMubG9hZFVuaXQudmFsdWUgPSBERUZBVUxUUy5sb2FkVW5pdDsNCiAgICAgICAgZWxzLmtkLnZhbHVlID0gREVGQVVMVFMua2Q7DQogICAgICAgIGVscy5zbGlkZXJNYXQudmFsdWUgPSBERUZBVUxUUy5zbGlkZXJNYXQ7DQogICAgICAgIGVscy5ndWlkZU1hdC52YWx1ZSA9IERFRkFVTFRTLmd1aWRlTWF0Ow0KICAgICAgICBlbHMucFJlZi52YWx1ZSA9IERFRkFVTFRTLnBSZWY7DQogICAgICAgIGVscy5wUmVmVW5pdC52YWx1ZSA9IERFRkFVTFRTLnBSZWZVbml0Ow0KICAgICAgICBlbHMuc2YudmFsdWUgPSBERUZBVUxUUy5zZjsNCiAgICAgICAgZWxzLmx1YmUudmFsdWUgPSBERUZBVUxUUy5sdWJlOw0KICAgICAgICBlbHMuc3BlZWQudmFsdWUgPSBERUZBVUxUUy5zcGVlZDsNCiAgICAgICAg<\/span><span class=\"sgcpc-js-chunk\">ZWxzLnRlbXAudmFsdWUgPSBERUZBVUxUUy50ZW1wOw0KICAgICAgICBbXS5mb3JFYWNoLmNhbGwoZWxzLnVuaXRSYWRpb3MsIGZ1bmN0aW9uIChyKSB7DQogICAgICAgICAgICByLmNoZWNrZWQgPSByLnZhbHVlID09PSBERUZBVUxUUy51bml0Ow0KICAgICAgICB9KTsNCiAgICAgICAgdXBkYXRlTW9kZVVJKCk7DQogICAgICAgIHVwZGF0ZVVuaXRMYWJlbHMoKTsNCiAgICAgICAgdXBkYXRlTWF0ZXJpYWxEZWZhdWx0cygpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHJlc2V0Q2FsY3VsYXRvcigpIHsNCiAgICAgICAgYXBwbHlEZWZhdWx0cygpOw0KICAgICAgICBjbGVhckVycm9ycygpOw0KICAgICAgICBpZiAoZWxzLndhcm5pbmdzKSBlbHMud2FybmluZ3MuaW5uZXJIVE1MID0gJyc7DQogICAgICAgIGhpZGVTZWN0aW9uKGVscy5yZXN1bHRzKTsNCiAgICAgICAgc3RhdGUucmVzdWx0c1Nob3duID0gZmFsc2U7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaGlkZVJlc3VsdHNPbklucHV0Q2hhbmdlKCkgew0KICAgICAgICBpZiAoIXN0YXRlLnJlc3VsdHNTaG93bikgcmV0dXJuOw0KICAgICAgICBoaWRlU2VjdGlvbihlbHMucmVzdWx0cyk7DQogICAgICAgIHN0YXRlLnJlc3VsdHNTaG93biA9IGZhbHNlOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGJpbmRFdmVudHMoKSB7DQogICAgICAgIGVscy5tb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHVwZGF0ZU1vZGVVSSgpOw0KICAgICAgICAgICAgaGlkZVJlc3VsdHNPbklucHV0Q2hhbmdlKCk7DQogICAgICAgIH0pOw0KDQogICAgICAgIGVscy5jb250YWN0VHlwZS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoaWRlUmVzdWx0c09uSW5wdXRDaGFuZ2UpOw0KDQogICAgICAgIFtlbHMuc2xpZGVyTWF0LCBlbHMuZ3VpZGVNYXRdLmZvckVhY2goZnVuY3Rpb24gKHNlbCkgew0KICAgICAgICAgICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBzdGF0ZS5wUmVmTWFudWFsID0gZmFsc2U7DQogICAgICAgICAgICAgICAgdXBkYXRlTWF0ZXJpYWxEZWZhdWx0cygpOw0KICAgICAgICAgICAgICAgIGhpZGVSZXN1bHRzT25JbnB1dENoYW5nZSgpOw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KDQogICAgICAgIGVscy5wUmVmLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgc3RhdGUucFJlZk1hbnVhbCA9IHRydWU7DQogICAgICAgICAgICBoaWRlUmVzdWx0c09uSW5wdXRDaGFuZ2UoKTsNCiAgICAgICAgfSk7DQoNCiAgICAgICAgdmFyIGxhc3RQUmVmVW5pdCA9IGVscy5wUmVmVW5pdC52YWx1ZTsNCiAgICAgICAgZWxzLnBSZWZVbml0LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgbGFzdFBSZWZVbml0ID0gdGhpcy52YWx1ZTsNCiAgICAgICAgfSk7DQogICAgICAgIGVscy5wUmVmVW5pdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgdiA9IHBhcnNlTnVtKGVscy5wUmVmLnZhbHVlKTsNCiAgICAgICAgICAgIGlmICh2ICE9PSBudWxsKSB7DQogICAgICAgICAgICAgICAgdmFyIG1wYSA9IHRvTWV0cmljUHJlc3N1cmUodiwgbGFzdFBSZWZVbml0KTsNCiAgICAgICAgICAgICAgICBlbHMucFJlZi52YWx1ZSA9IGZyb21NZXRyaWNQcmVzc3VyZShtcGEsIHRoaXMudmFsdWUpLnRvRml4ZWQoDQogICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPT09ICdNUGEnID8gMSA6IDANCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIGxhc3RQUmVmVW5pdCA9IHRoaXMudmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBoaWRlUmVzdWx0c09uSW5wdXRDaGFuZ2UoKTsNCiAgICAgICAgfSk7DQoNCiAgICAgICAgZWxzLnVuaXRSYWRpb3MuZm9yRWFjaChmdW5jdGlvbiAocmFkaW8pIHsNCiAgICAgICAgICAgIHJhZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2hlY2tlZCkgcmV0dXJuOw0KICAgICAgICAgICAgICAgIGNvbnZlcnRPblVuaXRDaGFuZ2Uoc3RhdGUudW5pdCwgdGhpcy52YWx1ZSk7DQogICAgICAgICAgICAgICAgc3RhdGUudW5pdCA9IHRoaXMudmFsdWU7DQogICAgICAgICAgICAgICAgdXBkYXRlVW5pdExhYmVscygpOw0KICAgICAgICAgICAgICAgIHVwZGF0ZU1hdGVyaWFsRGVmYXVsdHMoKTsNCiAgICAgICAgICAgICAgICBoaWRlUmVzdWx0c09uSW5wdXRDaGFuZ2UoKTsNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCg0KICAgICAgICB2YXIgbGl2ZUlucHV0cyA9IFsNCiAgICAgICAgICAgIGVscy5sZW5ndGgsIGVscy53aWR0aCwgZWxzLnBhZHMsIGVscy5ldGEsIGVscy5sb2FkLCBlbHMubG9hZFVuaXQsDQogICAgICAgICAgICBlbHMua2QsIGVscy5zZiwgZWxzLmx1YmUsIGVscy5zcGVlZCwgZWxzLnRlbXANCiAgICAgICAgXTsNCiAgICAgICAgbGl2ZUlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uIChpbnApIHsNCiAgICAgICAgICAgIGlmICghaW5wKSByZXR1cm47DQogICAgICAgICAgICBpbnAuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBoaWRlUmVzdWx0c09uSW5wdXRDaGFuZ2UpOw0KICAgICAgICAgICAgaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhpZGVSZXN1bHRzT25JbnB1dENoYW5nZSk7DQogICAgICAgIH0pOw0KDQogICAgICAgIGVscy5jYWxjdWxhdGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxjdWxhdGUpOw0KICAgICAgICBpZiAoZWxzLnJlc2V0QnRuKSBlbHMucmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldENhbGN1bGF0b3IpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGluaXQoKSB7DQogICAgICAgIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChST09UX0lEKTsNCiAgICAgICAgaWYgKCFyb290IHx8IHJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXNnY3BjLXJlYWR5JykgPT09ICcxJykgcmV0dXJuOw0KICAgICAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zZ2NwYy1yZWFkeScsICcxJyk7DQogICAgICAgIGJpbmRFbGVtZW50cygpOw0KICAgICAgICBhcHBseURlZmF1bHRzKCk7DQogICAgICAgIGJpbmRFdmVudHMoKTsNCiAgICB9DQoNCiAgICB3aW5kb3cuc2djcGNSZXNldCA9IHJlc2V0Q2FsY3VsYXRvcjsNCg0KICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHsNCiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXQpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGluaXQoKTsNCiAgICB9DQp9KSgpOw0K<\/span><\/div>\n    <div class=\"sgcpc-container\">\n\n        <div class=\"sgcpc-layout\">\n            <section class=\"sgcpc-card sgcpc-input-section\">\n                <h2>Input Parameters<\/h2>\n\n                <h3 class=\"sgcpc-subsection-title\">General Settings<\/h3>\n                <div class=\"sgcpc-input-grid\">\n                    <div class=\"sgcpc-form-group sgcpc-full-width\">\n                        <label>Unit System<\/label>\n                        <div class=\"sgcpc-unit-toggle\">\n                            <label class=\"sgcpc-radio-label\">\n                                <input type=\"radio\" name=\"sgcpc-unitSystem\" value=\"metric\" checked>\n                                <span>Metric (mm, MPa, N, m\/s, &deg;C)<\/span>\n                            <\/label>\n                            <label class=\"sgcpc-radio-label\">\n                                <input type=\"radio\" name=\"sgcpc-unitSystem\" value=\"imperial\">\n                                <span>Imperial (inch, psi, lbf, ft\/min, &deg;F)<\/span>\n                            <\/label>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcMode\">\n                            Calculation Mode\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Contact Pressure Check: verify pressure for a given load. Allowable Load: find maximum capacity. Required Contact Area: size contact area for a specified load.\">?<\/span>\n                        <\/label>\n                        <select id=\"sgcpcMode\">\n                            <option value=\"pressure\" selected>Contact Pressure Check<\/option>\n                            <option value=\"allowable\">Allowable Load Calculation<\/option>\n                            <option value=\"required\">Required Contact Area<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcContactType\">Contact Type<\/label>\n                        <select id=\"sgcpcContactType\">\n                            <option value=\"flat-slider\">Flat Slider<\/option>\n                            <option value=\"wear-plate\" selected>Guide Rail Wear Plate<\/option>\n                            <option value=\"linear-block\">Linear Guide Block<\/option>\n                            <option value=\"gib\">Gib \/ Slideway<\/option>\n                            <option value=\"custom\">Custom Contact<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <p class=\"sgcpc-mode-note\" id=\"sgcpcModeNote\">\n                        Contact Pressure Check: evaluate average contact pressure for the given load, geometry, and material limits.\n                    <\/p>\n                <\/div>\n\n                <h3 class=\"sgcpc-subsection-title\">Contact Geometry<\/h3>\n                <div class=\"sgcpc-input-grid sgcpc-mode-geometry\">\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcLength\">\n                            Contact Length (L)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Nominal contact length of each slider or pad surface. A = L \u00d7 W.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcLength\" value=\"200\" step=\"any\" min=\"0.001\">\n                            <span class=\"sgcpc-unit-label\" data-unit=\"length\">mm<\/span>\n                        <\/div>\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrLength\"><\/span>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcWidth\">\n                            Contact Width (W)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Nominal contact width of each slider or pad surface.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcWidth\" value=\"40\" step=\"any\" min=\"0.001\">\n                            <span class=\"sgcpc-unit-label\" data-unit=\"length\">mm<\/span>\n                        <\/div>\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrWidth\"><\/span>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcPads\">\n                            Number of Contact Pads (n)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Equally loaded sliders or guide pads sharing the total normal load. Fpad = Ftotal \/ n.\">?<\/span>\n                        <\/label>\n                        <input type=\"number\" id=\"sgcpcPads\" value=\"2\" step=\"1\" min=\"1\">\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrPads\"><\/span>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcEta\">\n                            Contact Area Utilization Factor (&eta;)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Accounts for grooves, oil pockets, mounting holes, partial contact, and flatness errors. Aeff = A \u00d7 \u03b7. Range: 0 to 1.\">?<\/span>\n                        <\/label>\n                        <input type=\"number\" id=\"sgcpcEta\" value=\"0.9\" step=\"0.01\" min=\"0.01\" max=\"1\">\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrEta\"><\/span>\n                    <\/div>\n                <\/div>\n\n                <h3 class=\"sgcpc-subsection-title\">Loading<\/h3>\n                <div class=\"sgcpc-input-grid\">\n                    <div class=\"sgcpc-form-group sgcpc-mode-load\">\n                        <label for=\"sgcpcLoad\">\n                            Total Applied Normal Load\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Total static or distributed normal load acting on all contact pads.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcLoad\" value=\"80\" step=\"any\" min=\"0.001\">\n                            <select id=\"sgcpcLoadUnit\" aria-label=\"Load unit\">\n                                <option value=\"N\">N<\/option>\n                                <option value=\"kN\" selected>kN<\/option>\n                                <option value=\"lbf\">lbf<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrLoad\"><\/span>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcKd\">\n                            Load Distribution Factor (Kd)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Conservative factor for uneven loading from misalignment, deflection, or mounting tolerances. Fdesign = Fpad \u00d7 Kd. Use values &gt; 1.0.\">?<\/span>\n                        <\/label>\n                        <input type=\"number\" id=\"sgcpcKd\" value=\"1.2\" step=\"0.01\" min=\"1\">\n                    <\/div>\n                <\/div>\n\n                <h3 class=\"sgcpc-subsection-title\">Materials &amp; Design Limits<\/h3>\n                <div class=\"sgcpc-input-grid\">\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcSliderMat\">Slider Material<\/label>\n                        <select id=\"sgcpcSliderMat\">\n                            <option value=\"hardened-steel\">Hardened Steel<\/option>\n                            <option value=\"carbon-steel\">Carbon Steel<\/option>\n                            <option value=\"cast-iron\">Cast Iron<\/option>\n                            <option value=\"bronze\" selected>Bronze<\/option>\n                            <option value=\"aluminum-bronze\">Aluminum Bronze<\/option>\n                            <option value=\"engineering-plastic\">Engineering Plastic<\/option>\n                            <option value=\"ptfe-composite\">PTFE Composite<\/option>\n                            <option value=\"custom\">Custom<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcGuideMat\">Guide Rail Material<\/label>\n                        <select id=\"sgcpcGuideMat\">\n                            <option value=\"hardened-steel\" selected>Hardened Steel<\/option>\n                            <option value=\"carbon-steel\">Carbon Steel<\/option>\n                            <option value=\"cast-iron\">Cast Iron<\/option>\n                            <option value=\"bronze\">Bronze<\/option>\n                            <option value=\"custom\">Custom<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcPRef\">\n                            Reference Allowable Contact Pressure\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Manufacturer or material limit for the weaker contact surface. pallow = pmaterial \/ SF.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcPRef\" value=\"25\" step=\"any\" min=\"0.001\">\n                            <select id=\"sgcpcPRefUnit\" aria-label=\"Pressure unit\">\n                                <option value=\"MPa\" selected>MPa<\/option>\n                                <option value=\"psi\">psi<\/option>\n                            <\/select>\n                        <\/div>\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrPRef\"><\/span>\n                        <p class=\"sgcpc-range-hint\" id=\"sgcpcMaterialHint\"><\/p>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcSf\">\n                            Design Safety Factor (SF)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Design safety factor applied to reference material pressure. Default: 2.0.\">?<\/span>\n                        <\/label>\n                        <input type=\"number\" id=\"sgcpcSf\" value=\"2\" step=\"0.1\" min=\"0.1\">\n                        <span class=\"sgcpc-error-msg\" id=\"sgcpcErrSf\"><\/span>\n                    <\/div>\n                <\/div>\n\n                <h3 class=\"sgcpc-subsection-title\">Operating Conditions (Optional)<\/h3>\n                <div class=\"sgcpc-input-grid\">\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcLube\">Lubrication Condition<\/label>\n                        <select id=\"sgcpcLube\">\n                            <option value=\"excellent\">Excellent<\/option>\n                            <option value=\"good\" selected>Good<\/option>\n                            <option value=\"limited\">Limited<\/option>\n                            <option value=\"poor\">Poor<\/option>\n                            <option value=\"dry\">Dry<\/option>\n                        <\/select>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcSpeed\">\n                            Sliding Speed (optional)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Sliding speed for PV = p \u00d7 v wear evaluation. Allowable PV limits depend on material pair, lubrication, and temperature.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcSpeed\" placeholder=\"Optional\" step=\"any\" min=\"0\">\n                            <span class=\"sgcpc-unit-label\" data-unit=\"speed\">m\/s<\/span>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sgcpc-form-group\">\n                        <label for=\"sgcpcTemp\">\n                            Operating Temperature (optional)\n                            <span class=\"sgcpc-tooltip\" data-tip=\"Operating temperature at the contact zone for wear-risk evaluation.\">?<\/span>\n                        <\/label>\n                        <div class=\"sgcpc-input-with-unit\">\n                            <input type=\"number\" id=\"sgcpcTemp\" placeholder=\"Optional\" step=\"any\">\n                            <span class=\"sgcpc-unit-label\" data-unit=\"temp\">&deg;C<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-warnings\" id=\"sgcpcWarnings\" aria-live=\"polite\"><\/div>\n\n                <div class=\"sgcpc-btn-row\">\n                    <button type=\"button\" id=\"sgcpcCalculateBtn\" class=\"sgcpc-btn sgcpc-btn-primary\">Calculate<\/button>\n                <\/div>\n            <\/section>\n\n            <section class=\"sgcpc-card sgcpc-hidden\" id=\"sgcpcResults\" style=\"display:none\">\n                <h2>Calculation Results<\/h2>\n\n                <div class=\"sgcpc-status-banner\" id=\"sgcpcStatusBanner\">\n                    <span class=\"sgcpc-status-icon\" id=\"sgcpcStatusIcon\">&mdash;<\/span>\n                    <div>\n                        <strong id=\"sgcpcStatusTitle\">Contact Status<\/strong>\n                        <p id=\"sgcpcStatusSub\">Enter values and calculate<\/p>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-hero\">\n                    <div class=\"sgcpc-hero-card\">\n                        <div class=\"sgcpc-hero-k\" id=\"sgcpcHeroPressureLabel\">Average Contact Pressure<\/div>\n                        <div class=\"sgcpc-hero-v\" id=\"sgcpcHeroPressure\">&mdash;<\/div>\n                        <div class=\"sgcpc-hero-u\" id=\"sgcpcHeroPressureSub\">p = Fdesign \/ Aeff<\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-viz-row\">\n                    <div class=\"sgcpc-viz-box\">\n                        <div class=\"sgcpc-viz-title\">Slider &amp; Guide Rail Contact Diagram<\/div>\n                        <svg class=\"sgcpc-schematic\" id=\"sgcpcSchematic\" viewBox=\"0 0 200 220\" role=\"img\" aria-label=\"Slider and guide rail contact diagram\" data-status=\"idle\">\n                            <rect class=\"sgcpc-sch-rail\" x=\"30\" y=\"160\" width=\"140\" height=\"18\" rx=\"2\"\/>\n                            <rect class=\"sgcpc-sch-slider\" x=\"40\" y=\"118\" width=\"120\" height=\"42\" rx=\"2\"\/>\n                            <line class=\"sgcpc-sch-dim\" x1=\"40\" y1=\"108\" x2=\"160\" y2=\"108\"\/>\n                            <line x1=\"40\" y1=\"104\" x2=\"40\" y2=\"112\" stroke=\"#64748b\" stroke-width=\"0.8\"\/>\n                            <line x1=\"160\" y1=\"104\" x2=\"160\" y2=\"112\" stroke=\"#64748b\" stroke-width=\"0.8\"\/>\n                            <text class=\"sgcpc-sch-label\" x=\"100\" y=\"100\" text-anchor=\"middle\">L = <tspan id=\"sgcpcSchLength\">200 mm<\/tspan><\/text>\n                            <line class=\"sgcpc-sch-dim\" x1=\"168\" y1=\"118\" x2=\"168\" y2=\"160\"\/>\n                            <line x1=\"164\" y1=\"118\" x2=\"172\" y2=\"118\" stroke=\"#64748b\" stroke-width=\"0.8\"\/>\n                            <line x1=\"164\" y1=\"160\" x2=\"172\" y2=\"160\" stroke=\"#64748b\" stroke-width=\"0.8\"\/>\n                            <text class=\"sgcpc-sch-label\" x=\"178\" y=\"142\" text-anchor=\"start\">W<\/text>\n                            <text class=\"sgcpc-sch-label\" x=\"178\" y=\"154\" text-anchor=\"start\" id=\"sgcpcSchWidth\">40 mm<\/text>\n                            <line class=\"sgcpc-sch-force-down\" x1=\"100\" y1=\"88\" x2=\"100\" y2=\"112\" stroke-width=\"2.5\"\/>\n                            <polygon class=\"sgcpc-sch-arrow\" points=\"95,106 100,114 105,106\"\/>\n                            <text class=\"sgcpc-sch-label\" x=\"100\" y=\"82\" text-anchor=\"middle\" id=\"sgcpcSchForce\">F = 80 kN<\/text>\n                            <g id=\"sgcpcPadGroup\"><\/g>\n                            <text class=\"sgcpc-sch-label\" x=\"100\" y=\"200\" text-anchor=\"middle\" id=\"sgcpcSchPads\">2 pads | Kd = 1.20<\/text>\n                            <text class=\"sgcpc-sch-label\" x=\"100\" y=\"214\" text-anchor=\"middle\" style=\"font-size:9px\">Normal load &darr; on contact surface<\/text>\n                        <\/svg>\n                    <\/div>\n\n                    <div class=\"sgcpc-viz-box\">\n                        <div class=\"sgcpc-viz-title\">Contact Pressure Heatmap (Relative)<\/div>\n                        <div class=\"sgcpc-heatmap\" id=\"sgcpcHeatmap\">\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                            <div class=\"sgcpc-hm-cell\"><\/div>\n                        <\/div>\n                        <p style=\"font-size:0.72rem;color:#64748b;text-align:center;margin:0!important\">Edge loading may raise local pressure above average<\/p>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-viz-row\">\n                    <div class=\"sgcpc-viz-box\">\n                        <div class=\"sgcpc-viz-title\">Pressure Utilization Gauge<\/div>\n                        <div class=\"sgcpc-gauge-row\">\n                            <svg class=\"sgcpc-gauge-svg\" viewBox=\"0 0 240 140\" aria-hidden=\"true\">\n                                <defs>\n                                    <linearGradient id=\"sgcpc-slider-guide-gauge-grad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n                                        <stop offset=\"0%\" stop-color=\"#16a34a\"\/>\n                                        <stop offset=\"55%\" stop-color=\"#d97706\"\/>\n                                        <stop offset=\"100%\" stop-color=\"#dc2626\"\/>\n                                    <\/linearGradient>\n                                <\/defs>\n                                <path d=\"M 30 118 A 90 90 0 0 1 210 118\" fill=\"none\" stroke=\"#e2e8f0\" stroke-width=\"14\" stroke-linecap=\"round\"\/>\n                                <path id=\"sgcpcGaugeArc\" d=\"M 30 118 A 90 90 0 0 1 210 118\" fill=\"none\" stroke=\"url(#sgcpc-slider-guide-gauge-grad)\" stroke-width=\"14\" stroke-linecap=\"round\" stroke-dasharray=\"282.7\" stroke-dashoffset=\"282.7\"\/>\n                                <g id=\"sgcpcGaugeNeedle\" transform=\"rotate(-90 120 118)\">\n                                    <line x1=\"120\" y1=\"118\" x2=\"120\" y2=\"44\" stroke=\"#0f172a\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n                                    <circle cx=\"120\" cy=\"118\" r=\"6\" fill=\"#0f172a\"\/>\n                                <\/g>\n                            <\/svg>\n                            <div>\n                                <div class=\"sgcpc-gauge-label\">Utilization (%)<\/div>\n                                <div class=\"sgcpc-gauge-readout\" id=\"sgcpcGaugeRead\">&mdash;<\/div>\n                                <div class=\"sgcpc-gauge-label\">Scale: 0&ndash;150% of allowable<\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div class=\"sgcpc-viz-box\">\n                        <div class=\"sgcpc-viz-title\">Wear Risk Indicator<\/div>\n                        <div style=\"text-align:center;padding:1rem 0\">\n                            <div class=\"sgcpc-result-label\">Qualitative Wear Risk<\/div>\n                            <div class=\"sgcpc-result-value sgcpc-out-wear\" id=\"sgcpcOutWear\" style=\"font-size:1.4rem;margin:0.5rem 0\">&mdash;<\/div>\n                            <p style=\"font-size:0.75rem;color:#64748b;margin:0!important\">Based on pressure utilization, speed, lubrication, material pair, and temperature<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-util\">\n                    <div class=\"sgcpc-util-head\">\n                        <span>Pressure utilization<\/span>\n                        <strong id=\"sgcpcOutUtil\">&mdash;<\/strong>\n                    <\/div>\n                    <div class=\"sgcpc-util-track\" aria-hidden=\"true\">\n                        <div class=\"sgcpc-util-fill\" id=\"sgcpcUtilFill\"><\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-results-grid\">\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Nominal Contact Area<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutNominalArea\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Effective Contact Area<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutEffArea\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Load Per Slider \/ Pad<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutFpad\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Design Load Per Pad<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutFdesign\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Average Contact Pressure<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutPressure\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Allowable Contact Pressure<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutPallow\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Maximum Allowable Load<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutFallow\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Required Contact Area<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutAreaReq\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Actual Safety Factor<\/span>\n                        <span class=\"sgcpc-result-value sgcpc-out-sf\" id=\"sgcpcOutSF\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">PV Value<\/span>\n                        <span class=\"sgcpc-result-value\" id=\"sgcpcOutPV\">&mdash;<\/span>\n                    <\/div>\n                    <div class=\"sgcpc-result-item\">\n                        <span class=\"sgcpc-result-label\">Contact Status<\/span>\n                        <span class=\"sgcpc-result-value sgcpc-out-status\" id=\"sgcpcOutStatus\">&mdash;<\/span>\n                    <\/div>\n                <\/div>\n\n                <div class=\"sgcpc-rec-box\">\n                    <h3>Engineering Recommendations<\/h3>\n                    <ul id=\"sgcpcRecommendations\"><\/ul>\n                <\/div>\n            <\/section>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script type=\"text\/javascript\">(function(){var r=document.getElementById(\"slider-guide-pressure-calculator\");if(!r)return;var p=r.querySelectorAll(\".sgcpc-js-chunk\"),b=\"\",i;for(i=0;i<p.length;i++)b+=p[i].textContent;if(!b)return;try{(new Function(atob(b)))();}catch(e){console.error(\"Slider Guide Pressure Calculator failed:\",e);}})();<\/script>\n","protected":false},"excerpt":{"rendered":"<p>The Slider \/ Guide Rail Contact Pressure Calculator is a practical engineering tool designed to calculate contact pressure between sliders, guide rails, wear plates, and&#8230;<\/p>","protected":false},"author":2,"featured_media":24759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8520],"tags":[8641,6202,8642,8643],"class_list":["post-24758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-contact-pressure","tag-guide-rail","tag-slider-design","tag-wear-analysis","pmpro-has-access"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Slider-Guide-Rail-Contact-Pressure-Calculator.png","_links":{"self":[{"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/posts\/24758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/comments?post=24758"}],"version-history":[{"count":0,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/posts\/24758\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/media\/24759"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/media?parent=24758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/categories?post=24758"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/fr\/wp-json\/wp\/v2\/tags?post=24758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}