{"id":24591,"date":"2026-08-11T00:56:54","date_gmt":"2026-08-11T00:56:54","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24591"},"modified":"2026-08-11T01:10:08","modified_gmt":"2026-08-11T01:10:08","slug":"gear-material-pair-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/ar\/gear-material-pair-calculator\/","title":{"rendered":"Gear Material Pair Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Gear Material Pair Calculator<\/strong> is a practical engineering tool designed to help users evaluate and select suitable material combinations for mating gears. By considering key factors such as gear material properties, hardness, strength, wear resistance, friction, and operating conditions, the calculator supports more reliable gear material selection. The <strong>Gear Material Pair Calculator<\/strong> is useful for engineers, designers, and technicians working with gearboxes, industrial machinery, automotive transmissions, and other power transmission systems. It can help compare different gear material pairs, reduce excessive wear, improve durability, and support efficient gear design decisions. Whether you are designing a new gear system or optimizing an existing transmission, this calculator provides a convenient way to assess material compatibility and improve the performance and service life of gear components.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Gear Material Pair Calculator<\/title>\n<\/head>\n<body>\n<div id=\"gmp-calc-root\" class=\"gmp-calc-root\">\n\n<style>\n  \/* Scoped styles - all rules live under #gmp-calc-root only *\/\n  #gmp-calc-root {\n    --gmp-navy:       #1a2332;\n    --gmp-navy-light: #243044;\n    --gmp-accent:     #2563eb;\n    --gmp-accent-dim: #1d4ed8;\n    --gmp-bg:         #ffffff;\n    --gmp-card:       #ffffff;\n    --gmp-border:     #d1d9e6;\n    --gmp-text:       #1e293b;\n    --gmp-muted:      #64748b;\n    --gmp-success:    #16a34a;\n    --gmp-warning:    #d97706;\n    --gmp-danger:     #dc2626;\n    --gmp-radius:     10px;\n    --gmp-shadow:     0 2px 12px rgba(26,35,50,.08);\n\n    box-sizing: border-box;\n    font-family: \"Segoe UI\", system-ui, -apple-system, sans-serif;\n    font-size: 16px;\n    line-height: 1.55;\n    color: var(--gmp-text);\n    background: var(--gmp-bg);\n    max-width: 1000px;\n    width: 100%;\n    margin: 0 auto;\n    padding: 1.5rem;\n    display: flex;\n    flex-direction: column;\n    gap: 1.5rem;\n  }\n\n  #gmp-calc-root *,\n  #gmp-calc-root *::before,\n  #gmp-calc-root *::after {\n    box-sizing: border-box;\n  }\n\n  #gmp-calc-root .gmp-card {\n    display: block;\n    background: var(--gmp-card);\n    border: 1px solid var(--gmp-border);\n    border-radius: var(--gmp-radius);\n    box-shadow: var(--gmp-shadow);\n    overflow: hidden;\n  }\n\n  #gmp-calc-root .gmp-card-header {\n    background: var(--gmp-navy);\n    color: #fff;\n    padding: .75rem 1.25rem;\n    font-size: .95rem;\n    font-weight: 600;\n    letter-spacing: .03em;\n    text-transform: uppercase;\n    margin: 0;\n  }\n\n  #gmp-calc-root .gmp-card-body {\n    padding: 1.25rem;\n  }\n\n  #gmp-calc-root .gmp-section-title {\n    font-size: .78rem;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: .06em;\n    color: var(--gmp-accent);\n    margin: 1.1rem 0 .6rem;\n    padding-bottom: .3rem;\n    border-bottom: 1px solid var(--gmp-border);\n  }\n\n  #gmp-calc-root .gmp-section-title:first-child {\n    margin-top: 0;\n  }\n\n  #gmp-calc-root .gmp-form-row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: .75rem;\n    margin-bottom: .75rem;\n  }\n\n  #gmp-calc-root .gmp-form-row.gmp-single {\n    grid-template-columns: 1fr;\n  }\n\n  @media (max-width: 560px) {\n    #gmp-calc-root .gmp-form-row {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  #gmp-calc-root label {\n    display: block;\n    font-size: .8rem;\n    font-weight: 600;\n    color: var(--gmp-muted);\n    margin-bottom: .25rem;\n  }\n\n  #gmp-calc-root label .gmp-unit {\n    font-weight: 400;\n    color: #94a3b8;\n  }\n\n  #gmp-calc-root input[type=\"number\"],\n  #gmp-calc-root select {\n    width: 100%;\n    max-width: 100%;\n    padding: .5rem .65rem;\n    border: 1px solid var(--gmp-border);\n    border-radius: 6px;\n    font-size: .88rem;\n    font-family: inherit;\n    color: var(--gmp-text);\n    background: #fafbfc;\n    transition: border-color .15s, box-shadow .15s;\n    margin: 0;\n    height: auto;\n    line-height: normal;\n  }\n\n  #gmp-calc-root input[type=\"number\"]:focus,\n  #gmp-calc-root select:focus {\n    outline: none;\n    border-color: var(--gmp-accent);\n    box-shadow: 0 0 0 3px rgba(37,99,235,.15);\n    background: #fff;\n  }\n\n  #gmp-calc-root .gmp-custom-fields {\n    display: none;\n    padding: .75rem;\n    background: #f8fafc;\n    border: 1px dashed var(--gmp-border);\n    border-radius: 6px;\n    margin-bottom: .75rem;\n  }\n\n  #gmp-calc-root .gmp-custom-fields.gmp-visible {\n    display: block;\n  }\n\n  #gmp-calc-root .gmp-toggle-group {\n    display: flex;\n    gap: 0;\n    margin-bottom: .75rem;\n    border: 1px solid var(--gmp-border);\n    border-radius: 6px;\n    overflow: hidden;\n  }\n\n  #gmp-calc-root .gmp-toggle-group button {\n    flex: 1;\n    padding: .45rem;\n    border: none;\n    background: #f1f5f9;\n    font-size: .82rem;\n    font-family: inherit;\n    font-weight: 600;\n    color: var(--gmp-muted);\n    cursor: pointer;\n    transition: background .15s, color .15s;\n    margin: 0;\n    line-height: normal;\n    text-transform: none;\n    letter-spacing: normal;\n  }\n\n  #gmp-calc-root .gmp-toggle-group button.gmp-active {\n    background: var(--gmp-accent);\n    color: #fff;\n  }\n\n  #gmp-calc-root .gmp-btn-calc-wrap {\n    display: flex;\n    justify-content: center;\n    margin-top: .5rem;\n  }\n\n  #gmp-calc-root .gmp-btn-calc {\n    width: 33.333%;\n    min-width: 120px;\n    padding: .75rem;\n    background: var(--gmp-accent);\n    color: #fff;\n    border: none;\n    border-radius: 6px;\n    font-size: .95rem;\n    font-family: inherit;\n    font-weight: 700;\n    cursor: pointer;\n    letter-spacing: .03em;\n    transition: background .15s, transform .1s;\n    margin: 0;\n    line-height: normal;\n    text-transform: none;\n  }\n\n  #gmp-calc-root .gmp-btn-calc:hover {\n    background: var(--gmp-accent-dim);\n  }\n\n  #gmp-calc-root .gmp-btn-calc:active {\n    transform: scale(.985);\n  }\n\n  #gmp-calc-root .gmp-status-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: .5rem;\n    padding: .6rem 1.1rem;\n    border-radius: 8px;\n    font-size: 1rem;\n    font-weight: 700;\n    margin-bottom: 1rem;\n    width: 100%;\n    justify-content: center;\n  }\n\n  #gmp-calc-root .gmp-status-badge.gmp-excellent { background: #dcfce7; color: #15803d; border: 2px solid #86efac; }\n  #gmp-calc-root .gmp-status-badge.gmp-acceptable { background: #fef9c3; color: #a16207; border: 2px solid #fde047; }\n  #gmp-calc-root .gmp-status-badge.gmp-warning { background: #ffedd5; color: #c2410c; border: 2px solid #fdba74; }\n  #gmp-calc-root .gmp-status-badge.gmp-danger { background: #fee2e2; color: #b91c1c; border: 2px solid #fca5a5; }\n\n  #gmp-calc-root .gmp-metric-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: .75rem;\n    margin-bottom: 1rem;\n  }\n\n  @media (max-width: 560px) {\n    #gmp-calc-root .gmp-metric-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  #gmp-calc-root .gmp-metric-box {\n    background: #f8fafc;\n    border: 1px solid var(--gmp-border);\n    border-radius: 8px;\n    padding: .85rem 1rem;\n    text-align: center;\n  }\n\n  #gmp-calc-root .gmp-metric-box .gmp-label {\n    font-size: .72rem;\n    font-weight: 600;\n    color: var(--gmp-muted);\n    text-transform: uppercase;\n    letter-spacing: .04em;\n  }\n\n  #gmp-calc-root .gmp-metric-box .gmp-value {\n    font-size: 1.45rem;\n    font-weight: 700;\n    margin: .2rem 0;\n  }\n\n  #gmp-calc-root .gmp-metric-box .gmp-sub {\n    font-size: .75rem;\n    color: var(--gmp-muted);\n  }\n\n  #gmp-calc-root .gmp-metric-box.gmp-ok .gmp-value { color: var(--gmp-success); }\n  #gmp-calc-root .gmp-metric-box.gmp-warn .gmp-value { color: var(--gmp-warning); }\n  #gmp-calc-root .gmp-metric-box.gmp-fail .gmp-value { color: var(--gmp-danger); }\n\n  #gmp-calc-root .gmp-alert-list {\n    list-style: none;\n    margin: 0 0 1rem;\n    padding: 0;\n  }\n\n  #gmp-calc-root .gmp-alert-list li {\n    padding: .55rem .75rem;\n    border-radius: 6px;\n    font-size: .84rem;\n    margin-bottom: .4rem;\n    display: flex;\n    align-items: flex-start;\n    gap: .5rem;\n  }\n\n  #gmp-calc-root .gmp-alert-list li.gmp-info { background: #eff6ff; color: #1e40af; border-left: 3px solid var(--gmp-accent); }\n  #gmp-calc-root .gmp-alert-list li.gmp-success { background: #f0fdf4; color: #166534; border-left: 3px solid var(--gmp-success); }\n  #gmp-calc-root .gmp-alert-list li.gmp-warn-item { background: #fffbeb; color: #92400e; border-left: 3px solid var(--gmp-warning); }\n  #gmp-calc-root .gmp-alert-list li.gmp-danger { background: #fef2f2; color: #991b1b; border-left: 3px solid var(--gmp-danger); }\n\n  #gmp-calc-root .gmp-rec-box {\n    background: #f0f4ff;\n    border: 1px solid #bfdbfe;\n    border-radius: 8px;\n    padding: 1rem;\n  }\n\n  #gmp-calc-root .gmp-rec-box h4 {\n    font-size: .85rem;\n    color: var(--gmp-navy);\n    margin: 0 0 .5rem;\n    font-weight: 700;\n    line-height: 1.4;\n  }\n\n  #gmp-calc-root .gmp-rec-box ul {\n    list-style: disc;\n    padding-left: 1.2rem;\n    margin: 0;\n    font-size: .84rem;\n    color: var(--gmp-text);\n  }\n\n  #gmp-calc-root .gmp-rec-box li {\n    margin-bottom: .35rem;\n  }\n\n  #gmp-calc-root .gmp-ratio-row {\n    margin-bottom: .75rem;\n  }\n\n  #gmp-calc-root .gmp-ratio-label {\n    display: flex;\n    justify-content: space-between;\n    font-size: .78rem;\n    font-weight: 600;\n    color: var(--gmp-muted);\n    margin-bottom: .25rem;\n  }\n\n  #gmp-calc-root .gmp-ratio-bar-bg {\n    height: 10px;\n    background: #e2e8f0;\n    border-radius: 5px;\n    overflow: hidden;\n  }\n\n  #gmp-calc-root .gmp-ratio-bar-fill {\n    height: 100%;\n    border-radius: 5px;\n    transition: width .3s;\n  }\n\n  #gmp-calc-root .gmp-ratio-bar-fill.gmp-ok { background: var(--gmp-success); }\n  #gmp-calc-root .gmp-ratio-bar-fill.gmp-warn { background: var(--gmp-warning); }\n  #gmp-calc-root .gmp-ratio-bar-fill.gmp-fail { background: var(--gmp-danger); }\n\n  #gmp-calc-root .gmp-geo-results {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: .5rem;\n    margin-top: .75rem;\n    padding-top: .75rem;\n    border-top: 1px solid var(--gmp-border);\n  }\n\n  #gmp-calc-root .gmp-geo-item {\n    text-align: center;\n  }\n\n  #gmp-calc-root .gmp-g-label {\n    font-size: .7rem;\n    color: var(--gmp-muted);\n    text-transform: uppercase;\n  }\n\n  #gmp-calc-root .gmp-g-val {\n    font-size: 1.1rem;\n    font-weight: 700;\n    color: var(--gmp-navy);\n  }\n\n  #gmp-calc-root .gmp-hardness-unit {\n    max-width: 90px;\n  }\n\n  #gmp-calc-root .gmp-no-margin {\n    margin-bottom: 0;\n  }\n\n  #gmp-calc-root .gmp-hidden {\n    display: none !important;\n  }\n\n  #gmp-calc-root #gmp-resultsPanel.gmp-results-shown {\n    display: block !important;\n  }\n\n  #gmp-calc-root .gmp-surface-value {\n    font-size: 1rem;\n  }\n<\/style>\n\n  <!-- Input Panel -->\n  <div class=\"gmp-card\">\n    <div class=\"gmp-card-header\">Input Parameters<\/div>\n    <div class=\"gmp-card-body\">\n\n      <div class=\"gmp-section-title\">Pinion Material<\/div>\n      <div class=\"gmp-form-row gmp-single\">\n        <div>\n          <label for=\"gmp-pinionMaterial\">Material Selection<\/label>\n          <select id=\"gmp-pinionMaterial\">\n            <option value=\"20CrMnTi\">20CrMnTi (Carburized)<\/option>\n            <option value=\"40Cr\">40Cr (Quenched &amp; Tempered)<\/option>\n            <option value=\"45Steel\">45 Steel (Normalized \/ Quenched)<\/option>\n            <option value=\"42CrMo\">42CrMo (Nitrided \/ Q&amp;T)<\/option>\n            <option value=\"Bronze\">Bronze (Worm \/ Special Pairs)<\/option>\n            <option value=\"custom\">Custom Material<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div id=\"gmp-pinionCustom\" class=\"gmp-custom-fields\">\n        <div class=\"gmp-form-row\">\n          <div>\n            <label for=\"gmp-sigmaF1\">Allowable Bending Stress [\u03c3<sub>F1<\/sub>] <span class=\"gmp-unit\">(MPa)<\/span><\/label>\n            <input type=\"number\" id=\"gmp-sigmaF1\" min=\"1\" step=\"1\" value=\"500\" \/>\n          <\/div>\n          <div>\n            <label for=\"gmp-sigmaH1\">Allowable Contact Stress [\u03c3<sub>H1<\/sub>] <span class=\"gmp-unit\">(MPa)<\/span><\/label>\n            <input type=\"number\" id=\"gmp-sigmaH1\" min=\"1\" step=\"1\" value=\"1350\" \/>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-section-title\">Gear Material<\/div>\n      <div class=\"gmp-form-row gmp-single\">\n        <div>\n          <label for=\"gmp-gearMaterial\">Material Selection<\/label>\n          <select id=\"gmp-gearMaterial\">\n            <option value=\"40Cr\">40Cr (Quenched &amp; Tempered)<\/option>\n            <option value=\"20CrMnTi\">20CrMnTi (Carburized)<\/option>\n            <option value=\"45Steel\">45 Steel (Normalized \/ Quenched)<\/option>\n            <option value=\"42CrMo\">42CrMo (Nitrided \/ Q&amp;T)<\/option>\n            <option value=\"Bronze\">Bronze (Worm \/ Special Pairs)<\/option>\n            <option value=\"custom\">Custom Material<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div id=\"gmp-gearCustom\" class=\"gmp-custom-fields\">\n        <div class=\"gmp-form-row\">\n          <div>\n            <label for=\"gmp-sigmaF2\">Allowable Bending Stress [\u03c3<sub>F2<\/sub>] <span class=\"gmp-unit\">(MPa)<\/span><\/label>\n            <input type=\"number\" id=\"gmp-sigmaF2\" min=\"1\" step=\"1\" value=\"370\" \/>\n          <\/div>\n          <div>\n            <label for=\"gmp-sigmaH2\">Allowable Contact Stress [\u03c3<sub>H2<\/sub>] <span class=\"gmp-unit\">(MPa)<\/span><\/label>\n            <input type=\"number\" id=\"gmp-sigmaH2\" min=\"1\" step=\"1\" value=\"1000\" \/>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-section-title\">Hardness Parameters<\/div>\n      <div class=\"gmp-form-row\">\n        <div>\n          <label for=\"gmp-pinionHardness\">Pinion Hardness<\/label>\n          <div class=\"gmp-form-row gmp-no-margin\">\n            <input type=\"number\" id=\"gmp-pinionHardness\" min=\"1\" step=\"0.1\" value=\"58\" \/>\n            <select id=\"gmp-pinionHardnessUnit\" class=\"gmp-hardness-unit\">\n              <option value=\"HRC\">HRC<\/option>\n              <option value=\"HBW\">HBW<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n        <div>\n          <label for=\"gmp-gearHardness\">Gear Hardness<\/label>\n          <div class=\"gmp-form-row gmp-no-margin\">\n            <input type=\"number\" id=\"gmp-gearHardness\" min=\"1\" step=\"0.1\" value=\"32\" \/>\n            <select id=\"gmp-gearHardnessUnit\" class=\"gmp-hardness-unit\">\n              <option value=\"HRC\">HRC<\/option>\n              <option value=\"HBW\">HBW<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-section-title\">Geometry &amp; Load<\/div>\n      <div class=\"gmp-toggle-group\" id=\"gmp-powerTorqueToggle\">\n        <button type=\"button\" class=\"gmp-active\" data-mode=\"power\">Power (P)<\/button>\n        <button type=\"button\" data-mode=\"torque\">Torque (T\u2081)<\/button>\n      <\/div>\n      <div class=\"gmp-form-row\">\n        <div id=\"gmp-powerField\">\n          <label for=\"gmp-power\">Transmitted Power (P) <span class=\"gmp-unit\">(kW)<\/span><\/label>\n          <input type=\"number\" id=\"gmp-power\" min=\"0.01\" step=\"0.1\" value=\"15\" \/>\n        <\/div>\n        <div id=\"gmp-torqueField\" class=\"gmp-hidden\">\n          <label for=\"gmp-torque\">Pinion Torque (T\u2081) <span class=\"gmp-unit\">(N\u00b7m)<\/span><\/label>\n          <input type=\"number\" id=\"gmp-torque\" min=\"0.1\" step=\"0.1\" value=\"200\" \/>\n        <\/div>\n        <div>\n          <label for=\"gmp-speed\">Pinion Speed (n\u2081) <span class=\"gmp-unit\">(RPM)<\/span><\/label>\n          <input type=\"number\" id=\"gmp-speed\" min=\"1\" step=\"1\" value=\"1450\" \/>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-toggle-group\" id=\"gmp-ratioTeethToggle\">\n        <button type=\"button\" class=\"gmp-active\" data-mode=\"ratio\">Gear Ratio (u)<\/button>\n        <button type=\"button\" data-mode=\"teeth\">Number of Teeth (z\u2081, z\u2082)<\/button>\n      <\/div>\n      <div class=\"gmp-form-row\" id=\"gmp-ratioField\">\n        <div>\n          <label for=\"gmp-ratio\">Gear Ratio (u = z\u2082\/z\u2081)<\/label>\n          <input type=\"number\" id=\"gmp-ratio\" min=\"1.01\" step=\"0.01\" value=\"3.5\" \/>\n        <\/div>\n      <\/div>\n      <div class=\"gmp-form-row gmp-hidden\" id=\"gmp-teethField\">\n        <div>\n          <label for=\"gmp-z1\">Pinion Teeth (z\u2081)<\/label>\n          <input type=\"number\" id=\"gmp-z1\" min=\"6\" step=\"1\" value=\"20\" \/>\n        <\/div>\n        <div>\n          <label for=\"gmp-z2\">Gear Teeth (z\u2082)<\/label>\n          <input type=\"number\" id=\"gmp-z2\" min=\"7\" step=\"1\" value=\"70\" \/>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-btn-calc-wrap\">\n        <button type=\"button\" class=\"gmp-btn-calc\" id=\"gmp-btnCalc\">Calculate<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Results Panel (hidden until Calculate is clicked) -->\n  <div id=\"gmp-resultsPanel\" class=\"gmp-card gmp-hidden\">\n    <div class=\"gmp-card-header\">Evaluation Results<\/div>\n    <div class=\"gmp-card-body\">\n\n      <div id=\"gmp-statusBadge\" class=\"gmp-status-badge gmp-acceptable\">\n        Awaiting Calculation\u2026\n      <\/div>\n\n      <div class=\"gmp-metric-grid\">\n        <div class=\"gmp-metric-box\" id=\"gmp-boxDeltaHB\">\n          <div class=\"gmp-label\">Hardness Delta (\u0394HB)<\/div>\n          <div class=\"gmp-value\" id=\"gmp-valDeltaHB\">\u2014<\/div>\n          <div class=\"gmp-sub\" id=\"gmp-subDeltaHB\">HB\u2081 \u2212 HB\u2082 (converted)<\/div>\n        <\/div>\n        <div class=\"gmp-metric-box\" id=\"gmp-boxSurface\">\n          <div class=\"gmp-label\">Surface Classification<\/div>\n          <div class=\"gmp-value gmp-surface-value\" id=\"gmp-valSurface\">\u2014<\/div>\n          <div class=\"gmp-sub\" id=\"gmp-subSurface\">Soft \/ Hard tooth surface<\/div>\n        <\/div>\n        <div class=\"gmp-metric-box\" id=\"gmp-boxRatioF\">\n          <div class=\"gmp-label\">Bending Stress Ratio<\/div>\n          <div class=\"gmp-value\" id=\"gmp-valRatioF\">\u2014<\/div>\n          <div class=\"gmp-sub\">\u03c3<sub>F1<\/sub> \/ \u03c3<sub>F2<\/sub><\/div>\n        <\/div>\n        <div class=\"gmp-metric-box\" id=\"gmp-boxRatioH\">\n          <div class=\"gmp-label\">Contact Stress Ratio<\/div>\n          <div class=\"gmp-value\" id=\"gmp-valRatioH\">\u2014<\/div>\n          <div class=\"gmp-sub\">\u03c3<sub>H1<\/sub> \/ \u03c3<sub>H2<\/sub><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"gmp-ratio-row\">\n        <div class=\"gmp-ratio-label\"><span>Bending: \u03c3<sub>F1<\/sub>\/\u03c3<sub>F2<\/sub><\/span><span id=\"gmp-ratioFLabel\">\u2014<\/span><\/div>\n        <div class=\"gmp-ratio-bar-bg\"><div class=\"gmp-ratio-bar-fill gmp-ok\" id=\"gmp-barF\" style=\"width:50%\"><\/div><\/div>\n      <\/div>\n      <div class=\"gmp-ratio-row\">\n        <div class=\"gmp-ratio-label\"><span>Contact: \u03c3<sub>H1<\/sub>\/\u03c3<sub>H2<\/sub><\/span><span id=\"gmp-ratioHLabel\">\u2014<\/span><\/div>\n        <div class=\"gmp-ratio-bar-bg\"><div class=\"gmp-ratio-bar-fill gmp-ok\" id=\"gmp-barH\" style=\"width:50%\"><\/div><\/div>\n      <\/div>\n\n      <div class=\"gmp-section-title\">Validation Alerts<\/div>\n      <ul class=\"gmp-alert-list\" id=\"gmp-alertList\">\n        <li class=\"gmp-info\">Configure inputs and click &#8220;Calculate&#8221; to begin.<\/li>\n      <\/ul>\n\n      <div class=\"gmp-rec-box\">\n        <h4>Design Recommendations<\/h4>\n        <ul id=\"gmp-recList\">\n          <li>Results will appear here after calculation.<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"gmp-geo-results\" id=\"gmp-geoResults\">\n        <div class=\"gmp-geo-item\">\n          <div class=\"gmp-g-label\">Torque T\u2081<\/div>\n          <div class=\"gmp-g-val\" id=\"gmp-geoTorque\">\u2014<\/div>\n        <\/div>\n        <div class=\"gmp-geo-item\">\n          <div class=\"gmp-g-label\">Gear Ratio u<\/div>\n          <div class=\"gmp-g-val\" id=\"gmp-geoRatio\">\u2014<\/div>\n        <\/div>\n        <div class=\"gmp-geo-item\">\n          <div class=\"gmp-g-label\">Pinion Cycles \/ Gear Cycle<\/div>\n          <div class=\"gmp-g-val\" id=\"gmp-geoCycles\">\u2014<\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n(function(){\n  function boot(){\n    var c=atob(\"ZnVuY3Rpb24gaW5pdEdtcENhbGN1bGF0b3IoKSB7DQogICAgdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ21wLWNhbGMtcm9vdCIpOw0KICAgIGlmICghcm9vdCkgcmV0dXJuOw0KDQogICAgdmFyICQgPSBmdW5jdGlvbiAoaWQpIHsNCiAgICAgIHJldHVybiByb290LnF1ZXJ5U2VsZWN0b3IoIiMiICsgaWQpOw0KICAgIH07DQoNCiAgICBmdW5jdGlvbiBzaG93UmVzdWx0c1BhbmVsKCkgew0KICAgICAgdmFyIHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdtcC1yZXN1bHRzUGFuZWwiKTsNCiAgICAgIGlmICghcGFuZWwpIHJldHVybjsNCiAgICAgIHBhbmVsLmNsYXNzTGlzdC5yZW1vdmUoImdtcC1oaWRkZW4iKTsNCiAgICAgIHBhbmVsLmNsYXNzTGlzdC5hZGQoImdtcC1yZXN1bHRzLXNob3duIik7DQogICAgICBwYW5lbC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKTsNCiAgICAgIGlmIChwYW5lbC5zY3JvbGxJbnRvVmlldykgew0KICAgICAgICBwYW5lbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAic21vb3RoIiwgYmxvY2s6ICJzdGFydCIgfSk7DQogICAgICB9DQogICAgfQ0KDQogICAgdmFyIE1BVEVSSUFMUyA9IHsNCiAgICAgICIyMENyTW5UaSI6IHsNCiAgICAgICAgbmFtZTogIjIwQ3JNblRpIChDYXJidXJpemVkKSIsDQogICAgICAgIHNpZ21hRjogNTAwLCBzaWdtYUg6IDEzNTAsDQogICAgICAgIGhhcmRuZXNzOiA1OCwgdW5pdDogIkhSQyIsDQogICAgICAgIGNhdGVnb3J5OiAiY2FzZS1oYXJkZW5lZCIsDQogICAgICAgIHRyZWF0bWVudDogIkNhcmJ1cml6aW5nICsgcXVlbmNoIGFuZCB0ZW1wZXI7IGNhc2UgZGVwdGggcGVyIG1vZHVsZSINCiAgICAgIH0sDQogICAgICAiNDBDciI6IHsNCiAgICAgICAgbmFtZTogIjQwQ3IgKFF1ZW5jaGVkIGFuZCBUZW1wZXJlZCkiLA0KICAgICAgICBzaWdtYUY6IDM3MCwgc2lnbWFIOiAxMDAwLA0KICAgICAgICBoYXJkbmVzczogMzIsIHVuaXQ6ICJIUkMiLA0KICAgICAgICBjYXRlZ29yeTogInRocm91Z2gtaGFyZGVuZWQiLA0KICAgICAgICB0cmVhdG1lbnQ6ICJPaWwgcXVlbmNoICsgdGVtcGVyIHRvIHRhcmdldCBoYXJkbmVzcyINCiAgICAgIH0sDQogICAgICAiNDVTdGVlbCI6IHsNCiAgICAgICAgbmFtZTogIjQ1IFN0ZWVsIChOb3JtYWxpemVkIC8gUXVlbmNoZWQpIiwNCiAgICAgICAgc2lnbWFGOiAzMTAsIHNpZ21hSDogODUwLA0KICAgICAgICBoYXJkbmVzczogMjIwLCB1bml0OiAiSEJXIiwNCiAgICAgICAgY2F0ZWdvcnk6ICJzb2Z0IiwNCiAgICAgICAgdHJlYXRtZW50OiAiTm9ybWFsaXplIG9yIHF1ZW5jaCBhbmQgdGVtcGVyOyBjb25zaWRlciBzdXJmYWNlIGhhcmRlbmluZyBmb3IgaGVhdnkgZHV0eSINCiAgICAgIH0sDQogICAgICAiNDJDck1vIjogew0KICAgICAgICBuYW1lOiAiNDJDck1vIChOaXRyaWRlZCAvIFEgYW5kIFQpIiwNCiAg\"+\"ICAgICAgc2lnbWFGOiA0NDAsIHNpZ21hSDogMTEwMCwNCiAgICAgICAgaGFyZG5lc3M6IDUyLCB1bml0OiAiSFJDIiwNCiAgICAgICAgY2F0ZWdvcnk6ICJuaXRyaWRlZCIsDQogICAgICAgIHRyZWF0bWVudDogIlEgYW5kIFQgYmFzZSArIG5pdHJpZGluZyBmb3IgaGlnaCBzdXJmYWNlIGhhcmRuZXNzIg0KICAgICAgfSwNCiAgICAgICJCcm9uemUiOiB7DQogICAgICAgIG5hbWU6ICJCcm9uemUgKFdvcm0gLyBTcGVjaWFsIFBhaXJzKSIsDQogICAgICAgIHNpZ21hRjogMTIwLCBzaWdtYUg6IDM1MCwNCiAgICAgICAgaGFyZG5lc3M6IDEwMCwgdW5pdDogIkhCVyIsDQogICAgICAgIGNhdGVnb3J5OiAic29mdCIsDQogICAgICAgIHRyZWF0bWVudDogIlR5cGljYWxseSBwYWlyZWQgd2l0aCBoYXJkZW5lZCBzdGVlbCB3b3JtL3BpbmlvbiINCiAgICAgIH0NCiAgICB9Ow0KDQogICAgZnVuY3Rpb24gaHJjVG9IYncoaHJjKSB7DQogICAgICBpZiAoaHJjIDw9IDIwKSByZXR1cm4gTWF0aC5yb3VuZCgyMjAgKyAoaHJjIC0gMjApICogNCk7DQogICAgICBpZiAoaHJjIDw9IDMwKSByZXR1cm4gTWF0aC5yb3VuZCgyMjggKyAoaHJjIC0gMjApICogMTApOw0KICAgICAgaWYgKGhyYyA8PSA0MCkgcmV0dXJuIE1hdGgucm91bmQoMjg1ICsgKGhyYyAtIDMwKSAqIDEyKTsNCiAgICAgIGlmIChocmMgPD0gNTApIHJldHVybiBNYXRoLnJvdW5kKDQwMSArIChocmMgLSA0MCkgKiAxNCk7DQogICAgICBpZiAoaHJjIDw9IDYwKSByZXR1cm4gTWF0aC5yb3VuZCg1NDEgKyAoaHJjIC0gNTApICogMTYpOw0KICAgICAgcmV0dXJuIE1hdGgucm91bmQoNzAxICsgKGhyYyAtIDYwKSAqIDE4KTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0b0hidyh2YWx1ZSwgdW5pdCkgew0KICAgICAgaWYgKHVuaXQgPT09ICJIUkMiKSByZXR1cm4gaHJjVG9IYncodmFsdWUpOw0KICAgICAgcmV0dXJuIHZhbHVlOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGNsYXNzaWZ5U3VyZmFjZShoYncpIHsNCiAgICAgIHJldHVybiBoYncgPD0gMzUwID8gInNvZnQiIDogImhhcmQiOw0KICAgIH0NCg0KICAgIHZhciBlbHMgPSB7DQogICAgICBwaW5pb25NYXRlcmlhbDogJCgiZ21wLXBpbmlvbk1hdGVyaWFsIiksDQogICAgICBnZWFyTWF0ZXJpYWw6ICQoImdtcC1nZWFyTWF0ZXJpYWwiKSwNCiAgICAgIHBpbmlvbkN1c3RvbTogJCgiZ21wLXBpbmlvbkN1c3RvbSIpLA0KICAgICAgZ2VhckN1c3RvbTogJCgiZ21wLWdlYXJDdXN0b20iKSwNCiAgICAgIHNpZ21hRjE6ICQoImdtcC1zaWdtYUYxIiksDQogICAgICBzaWdtYUgxOiAkKCJnbXAtc2lnbWFIMSIpLA0KICAgICAgc2lnbWFGMjogJCgiZ21wLXNpZ21hRjIiKSwNCiAgICAgIHNpZ21hSDI6ICQoImdtcC1zaWdtYUgyIiksDQogICAgICBwaW5pb25IYXJkbmVzczogJCgiZ21wLXBpbmlvbkhhcmRuZXNzIiksDQogICAgICBwaW5pb25IYXJkbmVzc1VuaXQ6ICQoImdtcC1waW5pb25IYXJkbmVzc1VuaXQiKSwNCiAgICAgIGdlYXJIYXJk\"+\"bmVzczogJCgiZ21wLWdlYXJIYXJkbmVzcyIpLA0KICAgICAgZ2VhckhhcmRuZXNzVW5pdDogJCgiZ21wLWdlYXJIYXJkbmVzc1VuaXQiKSwNCiAgICAgIHBvd2VyOiAkKCJnbXAtcG93ZXIiKSwNCiAgICAgIHRvcnF1ZTogJCgiZ21wLXRvcnF1ZSIpLA0KICAgICAgc3BlZWQ6ICQoImdtcC1zcGVlZCIpLA0KICAgICAgcmF0aW86ICQoImdtcC1yYXRpbyIpLA0KICAgICAgejE6ICQoImdtcC16MSIpLA0KICAgICAgejI6ICQoImdtcC16MiIpLA0KICAgICAgYnRuQ2FsYzogJCgiZ21wLWJ0bkNhbGMiKSwNCiAgICAgIHJlc3VsdHNQYW5lbDogJCgiZ21wLXJlc3VsdHNQYW5lbCIpLA0KICAgICAgc3RhdHVzQmFkZ2U6ICQoImdtcC1zdGF0dXNCYWRnZSIpLA0KICAgICAgdmFsRGVsdGFIQjogJCgiZ21wLXZhbERlbHRhSEIiKSwNCiAgICAgIHN1YkRlbHRhSEI6ICQoImdtcC1zdWJEZWx0YUhCIiksDQogICAgICB2YWxTdXJmYWNlOiAkKCJnbXAtdmFsU3VyZmFjZSIpLA0KICAgICAgc3ViU3VyZmFjZTogJCgiZ21wLXN1YlN1cmZhY2UiKSwNCiAgICAgIHZhbFJhdGlvRjogJCgiZ21wLXZhbFJhdGlvRiIpLA0KICAgICAgdmFsUmF0aW9IOiAkKCJnbXAtdmFsUmF0aW9IIiksDQogICAgICBib3hEZWx0YUhCOiAkKCJnbXAtYm94RGVsdGFIQiIpLA0KICAgICAgYm94U3VyZmFjZTogJCgiZ21wLWJveFN1cmZhY2UiKSwNCiAgICAgIGJveFJhdGlvRjogJCgiZ21wLWJveFJhdGlvRiIpLA0KICAgICAgYm94UmF0aW9IOiAkKCJnbXAtYm94UmF0aW9IIiksDQogICAgICBiYXJGOiAkKCJnbXAtYmFyRiIpLA0KICAgICAgYmFySDogJCgiZ21wLWJhckgiKSwNCiAgICAgIHJhdGlvRkxhYmVsOiAkKCJnbXAtcmF0aW9GTGFiZWwiKSwNCiAgICAgIHJhdGlvSExhYmVsOiAkKCJnbXAtcmF0aW9ITGFiZWwiKSwNCiAgICAgIGFsZXJ0TGlzdDogJCgiZ21wLWFsZXJ0TGlzdCIpLA0KICAgICAgcmVjTGlzdDogJCgiZ21wLXJlY0xpc3QiKSwNCiAgICAgIGdlb1RvcnF1ZTogJCgiZ21wLWdlb1RvcnF1ZSIpLA0KICAgICAgZ2VvUmF0aW86ICQoImdtcC1nZW9SYXRpbyIpLA0KICAgICAgZ2VvQ3ljbGVzOiAkKCJnbXAtZ2VvQ3ljbGVzIikNCiAgICB9Ow0KDQogICAgdmFyIGxvYWRNb2RlID0gInBvd2VyIjsNCiAgICB2YXIgZ2VvbU1vZGUgPSAicmF0aW8iOw0KDQogICAgZnVuY3Rpb24gc2V0dXBUb2dnbGUoZ3JvdXBJZCwgY2FsbGJhY2spIHsNCiAgICAgIHZhciBncm91cCA9ICQoZ3JvdXBJZCk7DQogICAgICBpZiAoIWdyb3VwKSByZXR1cm47DQogICAgICBncm91cC5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKS5mb3JFYWNoKGZ1bmN0aW9uIChidG4pIHsNCiAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgIGdyb3VwLnF1ZXJ5U2VsZWN0b3JBbGwoImJ1dHRvbiIpLmZvckVhY2goZnVuY3Rpb24gKGIpIHsNCiAgICAgICAgICAgIGIuY2xhc3NMaXN0LnJlbW92ZSgiZ21wLWFjdGl2ZSIpOw0KICAgICAg\"+\"ICAgIH0pOw0KICAgICAgICAgIGJ0bi5jbGFzc0xpc3QuYWRkKCJnbXAtYWN0aXZlIik7DQogICAgICAgICAgY2FsbGJhY2soYnRuLmdldEF0dHJpYnV0ZSgiZGF0YS1tb2RlIikpOw0KICAgICAgICB9KTsNCiAgICAgIH0pOw0KICAgIH0NCg0KICAgIHNldHVwVG9nZ2xlKCJnbXAtcG93ZXJUb3JxdWVUb2dnbGUiLCBmdW5jdGlvbiAobW9kZSkgew0KICAgICAgbG9hZE1vZGUgPSBtb2RlOw0KICAgICAgdmFyIHBvd2VyRmllbGQgPSAkKCJnbXAtcG93ZXJGaWVsZCIpOw0KICAgICAgdmFyIHRvcnF1ZUZpZWxkID0gJCgiZ21wLXRvcnF1ZUZpZWxkIik7DQogICAgICBpZiAocG93ZXJGaWVsZCkgcG93ZXJGaWVsZC5jbGFzc0xpc3QudG9nZ2xlKCJnbXAtaGlkZGVuIiwgbW9kZSAhPT0gInBvd2VyIik7DQogICAgICBpZiAodG9ycXVlRmllbGQpIHRvcnF1ZUZpZWxkLmNsYXNzTGlzdC50b2dnbGUoImdtcC1oaWRkZW4iLCBtb2RlICE9PSAidG9ycXVlIik7DQogICAgfSk7DQoNCiAgICBzZXR1cFRvZ2dsZSgiZ21wLXJhdGlvVGVldGhUb2dnbGUiLCBmdW5jdGlvbiAobW9kZSkgew0KICAgICAgZ2VvbU1vZGUgPSBtb2RlOw0KICAgICAgdmFyIHJhdGlvRmllbGQgPSAkKCJnbXAtcmF0aW9GaWVsZCIpOw0KICAgICAgdmFyIHRlZXRoRmllbGQgPSAkKCJnbXAtdGVldGhGaWVsZCIpOw0KICAgICAgaWYgKHJhdGlvRmllbGQpIHJhdGlvRmllbGQuY2xhc3NMaXN0LnRvZ2dsZSgiZ21wLWhpZGRlbiIsIG1vZGUgIT09ICJyYXRpbyIpOw0KICAgICAgaWYgKHRlZXRoRmllbGQpIHRlZXRoRmllbGQuY2xhc3NMaXN0LnRvZ2dsZSgiZ21wLWhpZGRlbiIsIG1vZGUgIT09ICJ0ZWV0aCIpOw0KICAgIH0pOw0KDQogICAgZnVuY3Rpb24gYXBwbHlNYXRlcmlhbFByZXNldChzZWxlY3RFbCwgc2lkZSkgew0KICAgICAgaWYgKCFzZWxlY3RFbCkgcmV0dXJuOw0KICAgICAgdmFyIHZhbCA9IHNlbGVjdEVsLnZhbHVlOw0KICAgICAgdmFyIGN1c3RvbURpdiA9IHNpZGUgPT09ICJwaW5pb24iID8gZWxzLnBpbmlvbkN1c3RvbSA6IGVscy5nZWFyQ3VzdG9tOw0KICAgICAgdmFyIGlzQ3VzdG9tID0gdmFsID09PSAiY3VzdG9tIjsNCg0KICAgICAgaWYgKGN1c3RvbURpdikgY3VzdG9tRGl2LmNsYXNzTGlzdC50b2dnbGUoImdtcC12aXNpYmxlIiwgaXNDdXN0b20pOw0KDQogICAgICBpZiAoIWlzQ3VzdG9tICYmIE1BVEVSSUFMU1t2YWxdKSB7DQogICAgICAgIHZhciBtID0gTUFURVJJQUxTW3ZhbF07DQogICAgICAgIGlmIChzaWRlID09PSAicGluaW9uIikgew0KICAgICAgICAgIGlmIChlbHMuc2lnbWFGMSkgZWxzLnNpZ21hRjEudmFsdWUgPSBtLnNpZ21hRjsNCiAgICAgICAgICBpZiAoZWxzLnNpZ21hSDEpIGVscy5zaWdtYUgxLnZhbHVlID0gbS5zaWdtYUg7DQogICAgICAgICAgaWYgKGVscy5waW5pb25IYXJkbmVzcykgZWxzLnBpbmlvbkhhcmRuZXNzLnZhbHVlID0gbS5oYXJkbmVzczsNCiAgICAgICAgICBpZiAoZWxzLnBpbmlvbkhhcmRuZXNzVW5pdCkgZWxz\"+\"LnBpbmlvbkhhcmRuZXNzVW5pdC52YWx1ZSA9IG0udW5pdDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBpZiAoZWxzLnNpZ21hRjIpIGVscy5zaWdtYUYyLnZhbHVlID0gbS5zaWdtYUY7DQogICAgICAgICAgaWYgKGVscy5zaWdtYUgyKSBlbHMuc2lnbWFIMi52YWx1ZSA9IG0uc2lnbWFIOw0KICAgICAgICAgIGlmIChlbHMuZ2VhckhhcmRuZXNzKSBlbHMuZ2VhckhhcmRuZXNzLnZhbHVlID0gbS5oYXJkbmVzczsNCiAgICAgICAgICBpZiAoZWxzLmdlYXJIYXJkbmVzc1VuaXQpIGVscy5nZWFySGFyZG5lc3NVbml0LnZhbHVlID0gbS51bml0Ow0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KDQogICAgaWYgKGVscy5waW5pb25NYXRlcmlhbCkgew0KICAgICAgZWxzLnBpbmlvbk1hdGVyaWFsLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgYXBwbHlNYXRlcmlhbFByZXNldChlbHMucGluaW9uTWF0ZXJpYWwsICJwaW5pb24iKTsNCiAgICAgIH0pOw0KICAgIH0NCiAgICBpZiAoZWxzLmdlYXJNYXRlcmlhbCkgew0KICAgICAgZWxzLmdlYXJNYXRlcmlhbC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbiAoKSB7DQogICAgICAgIGFwcGx5TWF0ZXJpYWxQcmVzZXQoZWxzLmdlYXJNYXRlcmlhbCwgImdlYXIiKTsNCiAgICAgIH0pOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNldEJveENsYXNzKGJveCwgY2xzKSB7DQogICAgICBpZiAoIWJveCkgcmV0dXJuOw0KICAgICAgYm94LmNsYXNzTGlzdC5yZW1vdmUoImdtcC1vayIsICJnbXAtd2FybiIsICJnbXAtZmFpbCIpOw0KICAgICAgaWYgKGNscykgYm94LmNsYXNzTGlzdC5hZGQoY2xzKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzZXRCYXIoYmFyLCByYXRpbywgY2xzKSB7DQogICAgICBpZiAoIWJhcikgcmV0dXJuOw0KICAgICAgYmFyLmNsYXNzTmFtZSA9ICJnbXAtcmF0aW8tYmFyLWZpbGwgIiArIGNsczsNCiAgICAgIHZhciBwY3QgPSBNYXRoLm1pbihNYXRoLm1heChyYXRpbyAvIDIsIDApLCAxKSAqIDEwMDsNCiAgICAgIGJhci5zdHlsZS53aWR0aCA9IHBjdCArICIlIjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7DQogICAgICBpZiAoIWVscy5waW5pb25NYXRlcmlhbCB8fCAhZWxzLmdlYXJNYXRlcmlhbCkgcmV0dXJuOw0KDQogICAgICB2YXIgcGluaW9uS2V5ID0gZWxzLnBpbmlvbk1hdGVyaWFsLnZhbHVlOw0KICAgICAgdmFyIGdlYXJLZXkgPSBlbHMuZ2Vhck1hdGVyaWFsLnZhbHVlOw0KICAgICAgdmFyIHNpZ21hRjEsIHNpZ21hSDEsIHNpZ21hRjIsIHNpZ21hSDI7DQoNCiAgICAgIGlmIChwaW5pb25LZXkgPT09ICJjdXN0b20iKSB7DQogICAgICAgIHNpZ21hRjEgPSBwYXJzZUZsb2F0KGVscy5zaWdtYUYxLnZhbHVlKTsNCiAgICAgICAgc2lnbWFIMSA9IHBhcnNlRmxvYXQoZWxzLnNpZ21hSDEudmFsdWUpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgc2lnbWFGMSA9IE1BVEVSSUFM\"+\"U1twaW5pb25LZXldLnNpZ21hRjsNCiAgICAgICAgc2lnbWFIMSA9IE1BVEVSSUFMU1twaW5pb25LZXldLnNpZ21hSDsNCiAgICAgIH0NCiAgICAgIGlmIChnZWFyS2V5ID09PSAiY3VzdG9tIikgew0KICAgICAgICBzaWdtYUYyID0gcGFyc2VGbG9hdChlbHMuc2lnbWFGMi52YWx1ZSk7DQogICAgICAgIHNpZ21hSDIgPSBwYXJzZUZsb2F0KGVscy5zaWdtYUgyLnZhbHVlKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHNpZ21hRjIgPSBNQVRFUklBTFNbZ2VhcktleV0uc2lnbWFGOw0KICAgICAgICBzaWdtYUgyID0gTUFURVJJQUxTW2dlYXJLZXldLnNpZ21hSDsNCiAgICAgIH0NCg0KICAgICAgdmFyIGhidzEgPSB0b0hidyhwYXJzZUZsb2F0KGVscy5waW5pb25IYXJkbmVzcy52YWx1ZSksIGVscy5waW5pb25IYXJkbmVzc1VuaXQudmFsdWUpOw0KICAgICAgdmFyIGhidzIgPSB0b0hidyhwYXJzZUZsb2F0KGVscy5nZWFySGFyZG5lc3MudmFsdWUpLCBlbHMuZ2VhckhhcmRuZXNzVW5pdC52YWx1ZSk7DQogICAgICB2YXIgZGVsdGFIQiA9IGhidzEgLSBoYncyOw0KDQogICAgICB2YXIgc3VyZmFjZTEgPSBjbGFzc2lmeVN1cmZhY2UoaGJ3MSk7DQogICAgICB2YXIgc3VyZmFjZTIgPSBjbGFzc2lmeVN1cmZhY2UoaGJ3Mik7DQogICAgICB2YXIgaXNTb2Z0UGFpciA9IHN1cmZhY2UxID09PSAic29mdCIgJiYgc3VyZmFjZTIgPT09ICJzb2Z0IjsNCg0KICAgICAgdmFyIG4xID0gcGFyc2VGbG9hdChlbHMuc3BlZWQudmFsdWUpOw0KICAgICAgdmFyIFQxLCB1Ow0KDQogICAgICBpZiAobG9hZE1vZGUgPT09ICJwb3dlciIpIHsNCiAgICAgICAgdmFyIFAgPSBwYXJzZUZsb2F0KGVscy5wb3dlci52YWx1ZSkgKiAxMDAwOw0KICAgICAgICBUMSA9IChQICogNjApIC8gKDIgKiBNYXRoLlBJICogbjEpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgVDEgPSBwYXJzZUZsb2F0KGVscy50b3JxdWUudmFsdWUpOw0KICAgICAgfQ0KDQogICAgICBpZiAoZ2VvbU1vZGUgPT09ICJyYXRpbyIpIHsNCiAgICAgICAgdSA9IHBhcnNlRmxvYXQoZWxzLnJhdGlvLnZhbHVlKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHUgPSBwYXJzZUludChlbHMuejIudmFsdWUsIDEwKSAvIHBhcnNlSW50KGVscy56MS52YWx1ZSwgMTApOw0KICAgICAgfQ0KDQogICAgICB2YXIgY3ljbGVSYXRpbyA9IHU7DQogICAgICB2YXIgcmF0aW9GID0gc2lnbWFGMSAvIHNpZ21hRjI7DQogICAgICB2YXIgcmF0aW9IID0gc2lnbWFIMSAvIHNpZ21hSDI7DQoNCiAgICAgIHZhciBhbGVydHMgPSBbXTsNCiAgICAgIHZhciByZWNzID0gW107DQogICAgICB2YXIgc2V2ZXJpdHkgPSAwOw0KDQogICAgICBpZiAoaXNTb2Z0UGFpcikgew0KICAgICAgICBpZiAoZGVsdGFIQiA8IDMwKSB7DQogICAgICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAiZ21wLWRhbmdlciIsIG1zZzogIkhhcmRuZXNzIGRlbHRhIERlbHRhIEhCID0gIiArIGRlbHRhSEIudG9GaXhlZCgwKSArICIgSEJXIGlzIGJl\"+\"bG93IHRoZSByZXF1aXJlZCAzMC01MCBIQlcgcmFuZ2UgZm9yIHNvZnQgdG9vdGggc3VyZmFjZXMuIiB9KTsNCiAgICAgICAgICBzZXZlcml0eSA9IE1hdGgubWF4KHNldmVyaXR5LCAzKTsNCiAgICAgICAgICByZWNzLnB1c2goIkluY3JlYXNlIHBpbmlvbiBoYXJkbmVzcyBieSAzMC01MCBIQlcgYWJvdmUgZ2VhciAoZS5nLiwgc3VyZmFjZSBoYXJkZW4gcGluaW9uIG9yIHJlZHVjZSBnZWFyIGhhcmRuZXNzKS4iKTsNCiAgICAgICAgfSBlbHNlIGlmIChkZWx0YUhCID4gNTApIHsNCiAgICAgICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJnbXAtd2Fybi1pdGVtIiwgbXNnOiAiSGFyZG5lc3MgZGVsdGEgRGVsdGEgSEIgPSAiICsgZGVsdGFIQi50b0ZpeGVkKDApICsgIiBIQlcgZXhjZWVkcyB0aGUgb3B0aW1hbCAzMC01MCBIQlcgcmFuZ2UgLSBjaGVjayBmb3IgYnJpdHRsZW5lc3MgYXQgdGhlIGNhc2UvY29yZSBpbnRlcmZhY2UuIiB9KTsNCiAgICAgICAgICBzZXZlcml0eSA9IE1hdGgubWF4KHNldmVyaXR5LCAyKTsNCiAgICAgICAgICByZWNzLnB1c2goIkNvbnNpZGVyIHRlbXBlcmluZyBwaW5pb24gdG8gcmVkdWNlIGV4Y2Vzc2l2ZSBoYXJkbmVzcyBkaWZmZXJlbnRpYWwgd2hpbGUgbWFpbnRhaW5pbmcgPj0gMzAgSEJXIGFkdmFudGFnZS4iKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJnbXAtc3VjY2VzcyIsIG1zZzogIkhhcmRuZXNzIGRlbHRhIERlbHRhIEhCID0gIiArIGRlbHRhSEIudG9GaXhlZCgwKSArICIgSEJXIGlzIHdpdGhpbiB0aGUgb3B0aW1hbCAzMC01MCBIQlcgcmFuZ2UgZm9yIHNvZnQgdG9vdGggc3VyZmFjZXMuIiB9KTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgaWYgKGhidzEgPCBoYncyKSB7DQogICAgICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAiZ21wLWRhbmdlciIsIG1zZzogIlBpbmlvbiBpcyBTT0ZURVIgdGhhbiBnZWFyIG9uIGhhcmQgdG9vdGggc3VyZmFjZXMgLSBwaW5pb24gd2lsbCBmYWlsIGZpcnN0IHVuZGVyIGNvbnRhY3QvYmVuZGluZyBmYXRpZ3VlLiIgfSk7DQogICAgICAgICAgc2V2ZXJpdHkgPSBNYXRoLm1heChzZXZlcml0eSwgMyk7DQogICAgICAgICAgcmVjcy5wdXNoKCJVcGdyYWRlIHBpbmlvbiBtYXRlcmlhbC9oYXJkbmVzcyBzbyBIQjEgPj0gSEIyLiBDb25zaWRlciBjYXJidXJpemluZyBvciBuaXRyaWRpbmcgdGhlIHBpbmlvbi4iKTsNCiAgICAgICAgfSBlbHNlIGlmIChkZWx0YUhCIDwgMCkgew0KICAgICAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogImdtcC1kYW5nZXIiLCBtc2c6ICJQaW5pb24gaGFyZG5lc3MgaXMgbG93ZXIgdGhhbiBnZWFyIC0gdW5hY2NlcHRhYmxlIGZvciBoYXJkLXN1cmZhY2UgcGFpcnMuIiB9KTsNCiAgICAgICAgICBzZXZlcml0eSA9IE1hdGgubWF4KHNldmVyaXR5LCAzKTsNCiAgICAgICAgfSBlbHNlIGlmIChkZWx0YUhCIDwgMzApIHsNCiAgICAgICAgICBhbGVydHMucHVzaCh7\"+\"IHR5cGU6ICJnbXAtd2Fybi1pdGVtIiwgbXNnOiAiSGFyZG5lc3MgZGVsdGEgRGVsdGEgSEIgPSAiICsgZGVsdGFIQi50b0ZpeGVkKDApICsgIiBIQlcgLSBhY2NlcHRhYmxlIGZvciBoYXJkIHN1cmZhY2VzIGJ1dCBwaW5pb24gc2hvdWxkIGlkZWFsbHkgYmUgZXF1YWwgb3Igc2xpZ2h0bHkgaGFyZGVyLiIgfSk7DQogICAgICAgICAgc2V2ZXJpdHkgPSBNYXRoLm1heChzZXZlcml0eSwgMik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAiZ21wLXN1Y2Nlc3MiLCBtc2c6ICJIYXJkbmVzcyBkZWx0YSBEZWx0YSBIQiA9ICIgKyBkZWx0YUhCLnRvRml4ZWQoMCkgKyAiIEhCVyAtIHBpbmlvbiBpcyBhZGVxdWF0ZWx5IGhhcmRlciB0aGFuIGdlYXIgZm9yIGhhcmQgdG9vdGggc3VyZmFjZXMuIiB9KTsNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICBpZiAocmF0aW9GIDwgMS4wKSB7DQogICAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogImdtcC13YXJuLWl0ZW0iLCBtc2c6ICJQaW5pb24gYWxsb3dhYmxlIGJlbmRpbmcgc3RyZXNzIChzaWdtYSBGMSA9ICIgKyBzaWdtYUYxICsgIiBNUGEpIGlzIExPV0VSIHRoYW4gZ2VhciAoc2lnbWEgRjIgPSAiICsgc2lnbWFGMiArICIgTVBhKS4gUGluaW9uIGV4cGVyaWVuY2VzICIgKyBjeWNsZVJhdGlvLnRvRml4ZWQoMSkgKyAieCBtb3JlIHN0cmVzcyBjeWNsZXMuIiB9KTsNCiAgICAgICAgc2V2ZXJpdHkgPSBNYXRoLm1heChzZXZlcml0eSwgMik7DQogICAgICAgIHJlY3MucHVzaCgiU2VsZWN0IGEgaGlnaGVyLXN0cmVuZ3RoIHBpbmlvbiBtYXRlcmlhbCBvciBpbXByb3ZlIGhlYXQgdHJlYXRtZW50IHRvIHJhaXNlIHNpZ21hIEYxIGFib3ZlIHNpZ21hIEYyLiIpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAiZ21wLXN1Y2Nlc3MiLCBtc2c6ICJCZW5kaW5nIHN0cmVzcyBiYWxhbmNlIE9LOiBzaWdtYSBGMS9zaWdtYSBGMiA9ICIgKyByYXRpb0YudG9GaXhlZCgyKSArICIgKHBpbmlvbiA+PSBnZWFyKS4iIH0pOw0KICAgICAgfQ0KDQogICAgICBpZiAocmF0aW9IIDwgMS4wKSB7DQogICAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogImdtcC13YXJuLWl0ZW0iLCBtc2c6ICJQaW5pb24gYWxsb3dhYmxlIGNvbnRhY3Qgc3RyZXNzIChzaWdtYSBIMSA9ICIgKyBzaWdtYUgxICsgIiBNUGEpIGlzIExPV0VSIHRoYW4gZ2VhciAoc2lnbWEgSDIgPSAiICsgc2lnbWFIMiArICIgTVBhKS4iIH0pOw0KICAgICAgICBzZXZlcml0eSA9IE1hdGgubWF4KHNldmVyaXR5LCAyKTsNCiAgICAgICAgcmVjcy5wdXNoKCJVcGdyYWRlIHBpbmlvbiBzdXJmYWNlIGhhcmRuZXNzL3RyZWF0bWVudCB0byBpbmNyZWFzZSBzaWdtYSBIMSBhYm92ZSBzaWdtYSBIMi4iKTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogImdtcC1zdWNjZXNzIiwgbXNnOiAiQ29udGFjdCBzdHJlc3MgYmFsYW5jZSBPSzogc2lnbWEg\"+\"SDEvc2lnbWEgSDIgPSAiICsgcmF0aW9ILnRvRml4ZWQoMikgKyAiIChwaW5pb24gPj0gZ2VhcikuIiB9KTsNCiAgICAgIH0NCg0KICAgICAgdmFyIHNhbWVNYXRlcmlhbCA9IHBpbmlvbktleSA9PT0gZ2VhcktleSAmJiBwaW5pb25LZXkgIT09ICJjdXN0b20iOw0KICAgICAgdmFyIGJvdGhTb2Z0VW50cmVhdGVkID0gcGluaW9uS2V5ID09PSAiNDVTdGVlbCIgJiYgZ2VhcktleSA9PT0gIjQ1U3RlZWwiOw0KDQogICAgICBpZiAoYm90aFNvZnRVbnRyZWF0ZWQgfHwgKHNhbWVNYXRlcmlhbCAmJiBpc1NvZnRQYWlyICYmIHBpbmlvbktleSA9PT0gIjQ1U3RlZWwiKSkgew0KICAgICAgICBhbGVydHMucHVzaCh7IHR5cGU6ICJnbXAtZGFuZ2VyIiwgbXNnOiAiSElHSCBSSVNLIG9mIGdhbGxpbmcvYWRoZXNpdmUgd2VhciAtIGlkZW50aWNhbCB1bnRyZWF0ZWQgc29mdCBzdGVlbCBwYWlyIHVuZGVyIGhlYXZ5IGxvYWQuIiB9KTsNCiAgICAgICAgc2V2ZXJpdHkgPSBNYXRoLm1heChzZXZlcml0eSwgMyk7DQogICAgICAgIHJlY3MucHVzaCgiQXZvaWQgcGFpcmluZyBpZGVudGljYWwgdW50cmVhdGVkIDQ1IFN0ZWVsLiBIYXJkZW4gdGhlIHBpbmlvbiAoY2FyYnVyaXplL25pdHJpZGluZykgb3IgdXNlIGRpc3NpbWlsYXIgaGFyZG5lc3MgcGFpcmluZy4iKTsNCiAgICAgIH0gZWxzZSBpZiAoc2FtZU1hdGVyaWFsICYmIGlzU29mdFBhaXIpIHsNCiAgICAgICAgYWxlcnRzLnB1c2goeyB0eXBlOiAiZ21wLXdhcm4taXRlbSIsIG1zZzogIklkZW50aWNhbCBzb2Z0IG1hdGVyaWFscyAoIiArIChNQVRFUklBTFNbcGluaW9uS2V5XSA\/IE1BVEVSSUFMU1twaW5pb25LZXldLm5hbWUgOiAic2FtZSIpICsgIikgLSBlbGV2YXRlZCBzY3VmZmluZy9nYWxsaW5nIHJpc2sgdW5kZXIgaGVhdnkgbG9hZCBvciBwb29yIGx1YnJpY2F0aW9uLiIgfSk7DQogICAgICAgIHNldmVyaXR5ID0gTWF0aC5tYXgoc2V2ZXJpdHksIDIpOw0KICAgICAgICByZWNzLnB1c2goIkVuc3VyZSBhZGVxdWF0ZSBsdWJyaWNhdGlvbiAoRVAgb2lsKS4gQ29uc2lkZXIgaGFyZGVuaW5nIHBpbmlvbiBvciB1c2luZyBkaXNzaW1pbGFyIG1hdGVyaWFsIHBhaXJpbmcuIik7DQogICAgICB9DQoNCiAgICAgIGlmIChwaW5pb25LZXkgPT09ICJCcm9uemUiICYmIGdlYXJLZXkgIT09ICJCcm9uemUiKSB7DQogICAgICAgIHJlY3MucHVzaCgiQnJvbnplIHBpbmlvbiB3aXRoIHN0ZWVsIGdlYXIgaXMgdW51c3VhbCAtIHZlcmlmeSB0aGlzIGlzIGludGVudGlvbmFsICh0eXBpY2FsbHkgYnJvbnplIGlzIHRoZSB3b3JtIHdoZWVsIG1hdGVyaWFsKS4iKTsNCiAgICAgIH0NCiAgICAgIGlmIChnZWFyS2V5ID09PSAiQnJvbnplIiAmJiBwaW5pb25LZXkgIT09ICJCcm9uemUiKSB7DQogICAgICAgIGFsZXJ0cy5wdXNoKHsgdHlwZTogImdtcC1pbmZvIiwgbXNnOiAiQnJvbnplIGdlYXIgd2l0aCBoYXJkZW5lZCBzdGVlbCBwaW5pb24gLSBzdGFuZGFyZCB3b3JtL3doZWVsIGNvbmZpZ3VyYXRpb24uIEVu\"+\"c3VyZSBhZGVxdWF0ZSBvaWwgZmlsbSB0aGlja25lc3MuIiB9KTsNCiAgICAgICAgcmVjcy5wdXNoKCJVc2UgaGlnaC12aXNjb3NpdHkgd29ybSBnZWFyIG9pbCB3aXRoIEVQIGFkZGl0aXZlcy4gQ2hlY2sgc2xpZGluZyB2ZWxvY2l0eSBhbmQgY29udGFjdCBzdHJlc3MgbGltaXRzIGZvciBicm9uemUuIik7DQogICAgICB9DQoNCiAgICAgIGlmIChyZWNzLmxlbmd0aCA9PT0gMCB8fCBzZXZlcml0eSA8PSAxKSB7DQogICAgICAgIHJlY3MucHVzaCgiTWF0ZXJpYWwgcGFpcmluZyBhcHBlYXJzIHdlbGwtbWF0Y2hlZCBmb3IgcHJlbGltaW5hcnkgZXZhbHVhdGlvbi4iKTsNCiAgICAgIH0NCiAgICAgIGlmIChNQVRFUklBTFNbcGluaW9uS2V5XSkgew0KICAgICAgICByZWNzLnB1c2goIlBpbmlvbiB0cmVhdG1lbnQ6ICIgKyBNQVRFUklBTFNbcGluaW9uS2V5XS50cmVhdG1lbnQpOw0KICAgICAgfQ0KICAgICAgaWYgKE1BVEVSSUFMU1tnZWFyS2V5XSkgew0KICAgICAgICByZWNzLnB1c2goIkdlYXIgdHJlYXRtZW50OiAiICsgTUFURVJJQUxTW2dlYXJLZXldLnRyZWF0bWVudCk7DQogICAgICB9DQogICAgICByZWNzLnB1c2goIlBpbmlvbiBzdHJlc3MgY3ljbGVzIHBlciBnZWFyIHJldm9sdXRpb246ICIgKyBjeWNsZVJhdGlvLnRvRml4ZWQoMSkgKyAieCAtIHBpbmlvbiBpcyB0aGUgZmF0aWd1ZS1jcml0aWNhbCBtZW1iZXIuIik7DQoNCiAgICAgIHZhciBzdGF0dXNNYXAgPSBbDQogICAgICAgIHsgY2xzOiAiZ21wLWV4Y2VsbGVudCIsIHRleHQ6ICJFeGNlbGxlbnQgUGFpciIgfSwNCiAgICAgICAgeyBjbHM6ICJnbXAtYWNjZXB0YWJsZSIsIHRleHQ6ICJBY2NlcHRhYmxlIFBhaXIiIH0sDQogICAgICAgIHsgY2xzOiAiZ21wLXdhcm5pbmciLCB0ZXh0OiAiV2FybmluZzogUmV2aWV3IFJlcXVpcmVkIiB9LA0KICAgICAgICB7IGNsczogImdtcC1kYW5nZXIiLCB0ZXh0OiAiSGlnaCBSaXNrIC0gRG8gTm90IFByb2NlZWQiIH0NCiAgICAgIF07DQogICAgICB2YXIgc3QgPSBzdGF0dXNNYXBbc2V2ZXJpdHldOw0KICAgICAgaWYgKGVscy5zdGF0dXNCYWRnZSkgew0KICAgICAgICBlbHMuc3RhdHVzQmFkZ2UuY2xhc3NOYW1lID0gImdtcC1zdGF0dXMtYmFkZ2UgIiArIHN0LmNsczsNCiAgICAgICAgZWxzLnN0YXR1c0JhZGdlLnRleHRDb250ZW50ID0gc3QudGV4dDsNCiAgICAgIH0NCg0KICAgICAgaWYgKGVscy52YWxEZWx0YUhCKSBlbHMudmFsRGVsdGFIQi50ZXh0Q29udGVudCA9IChkZWx0YUhCID49IDAgPyAiKyIgOiAiIikgKyBkZWx0YUhCLnRvRml4ZWQoMCkgKyAiIEhCVyI7DQogICAgICBpZiAoZWxzLnN1YkRlbHRhSEIpIGVscy5zdWJEZWx0YUhCLnRleHRDb250ZW50ID0gIkhCMSgiICsgaGJ3MS50b0ZpeGVkKDApICsgIikgLSBIQjIoIiArIGhidzIudG9GaXhlZCgwKSArICIpIGNvbnZlcnRlZCI7DQoNCiAgICAgIHZhciBkZWx0YUNscyA9IGlzU29mdFBhaXINCiAgICAgICAgPyAoZGVsdGFIQiA+PSAzMCAmJiBkZWx0YUhCIDw9\"+\"IDUwID8gImdtcC1vayIgOiBkZWx0YUhCID49IDMwID8gImdtcC13YXJuIiA6ICJnbXAtZmFpbCIpDQogICAgICAgIDogKGhidzEgPj0gaGJ3MiA\/ICJnbXAtb2siIDogImdtcC1mYWlsIik7DQogICAgICBzZXRCb3hDbGFzcyhlbHMuYm94RGVsdGFIQiwgZGVsdGFDbHMpOw0KDQogICAgICBpZiAoZWxzLnZhbFN1cmZhY2UpIGVscy52YWxTdXJmYWNlLnRleHRDb250ZW50ID0gaXNTb2Z0UGFpciA\/ICJTb2Z0IFRvb3RoIiA6ICJIYXJkIFRvb3RoIjsNCiAgICAgIGlmIChlbHMuc3ViU3VyZmFjZSkgZWxzLnN1YlN1cmZhY2UudGV4dENvbnRlbnQgPSAiUGluaW9uOiAiICsgc3VyZmFjZTEgKyAiLCBHZWFyOiAiICsgc3VyZmFjZTI7DQogICAgICBzZXRCb3hDbGFzcyhlbHMuYm94U3VyZmFjZSwgaXNTb2Z0UGFpciA\/ICJnbXAtd2FybiIgOiAiZ21wLW9rIik7DQoNCiAgICAgIGlmIChlbHMudmFsUmF0aW9GKSBlbHMudmFsUmF0aW9GLnRleHRDb250ZW50ID0gcmF0aW9GLnRvRml4ZWQoMik7DQogICAgICBpZiAoZWxzLnZhbFJhdGlvSCkgZWxzLnZhbFJhdGlvSC50ZXh0Q29udGVudCA9IHJhdGlvSC50b0ZpeGVkKDIpOw0KICAgICAgc2V0Qm94Q2xhc3MoZWxzLmJveFJhdGlvRiwgcmF0aW9GID49IDEgPyAiZ21wLW9rIiA6ICJnbXAtd2FybiIpOw0KICAgICAgc2V0Qm94Q2xhc3MoZWxzLmJveFJhdGlvSCwgcmF0aW9IID49IDEgPyAiZ21wLW9rIiA6ICJnbXAtd2FybiIpOw0KDQogICAgICBzZXRCYXIoZWxzLmJhckYsIHJhdGlvRiwgcmF0aW9GID49IDEuMSA\/ICJnbXAtb2siIDogcmF0aW9GID49IDAuOSA\/ICJnbXAtd2FybiIgOiAiZ21wLWZhaWwiKTsNCiAgICAgIHNldEJhcihlbHMuYmFySCwgcmF0aW9ILCByYXRpb0ggPj0gMS4xID8gImdtcC1vayIgOiByYXRpb0ggPj0gMC45ID8gImdtcC13YXJuIiA6ICJnbXAtZmFpbCIpOw0KICAgICAgaWYgKGVscy5yYXRpb0ZMYWJlbCkgZWxzLnJhdGlvRkxhYmVsLnRleHRDb250ZW50ID0gcmF0aW9GLnRvRml4ZWQoMik7DQogICAgICBpZiAoZWxzLnJhdGlvSExhYmVsKSBlbHMucmF0aW9ITGFiZWwudGV4dENvbnRlbnQgPSByYXRpb0gudG9GaXhlZCgyKTsNCg0KICAgICAgaWYgKGVscy5hbGVydExpc3QpIHsNCiAgICAgICAgZWxzLmFsZXJ0TGlzdC5pbm5lckhUTUwgPSBhbGVydHMubWFwKGZ1bmN0aW9uIChhKSB7DQogICAgICAgICAgcmV0dXJuICI8bGkgY2xhc3M9XCIiICsgYS50eXBlICsgIlwiPiIgKyBhLm1zZyArICI8L2xpPiI7DQogICAgICAgIH0pLmpvaW4oIiIpOw0KICAgICAgfQ0KDQogICAgICB2YXIgdW5pcXVlUmVjcyA9IFtdOw0KICAgICAgcmVjcy5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7DQogICAgICAgIGlmICh1bmlxdWVSZWNzLmluZGV4T2YocikgPT09IC0xKSB1bmlxdWVSZWNzLnB1c2gocik7DQogICAgICB9KTsNCiAgICAgIGlmIChlbHMucmVjTGlzdCkgew0KICAgICAgICBlbHMucmVjTGlzdC5pbm5lckhUTUwgPSB1bmlxdWVSZWNzLm1hcChmdW5jdGlvbiAocikgew0K\"+\"ICAgICAgICAgIHJldHVybiAiPGxpPiIgKyByICsgIjwvbGk+IjsNCiAgICAgICAgfSkuam9pbigiIik7DQogICAgICB9DQoNCiAgICAgIGlmIChlbHMuZ2VvVG9ycXVlKSBlbHMuZ2VvVG9ycXVlLnRleHRDb250ZW50ID0gVDEudG9GaXhlZCgxKSArICIgTiptIjsNCiAgICAgIGlmIChlbHMuZ2VvUmF0aW8pIGVscy5nZW9SYXRpby50ZXh0Q29udGVudCA9IHUudG9GaXhlZCgyKTsNCiAgICAgIGlmIChlbHMuZ2VvQ3ljbGVzKSBlbHMuZ2VvQ3ljbGVzLnRleHRDb250ZW50ID0gY3ljbGVSYXRpby50b0ZpeGVkKDEpICsgIngiOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHJ1bkNhbGN1bGF0aW9uKGV2ZW50KSB7DQogICAgICBpZiAoZXZlbnQgJiYgZXZlbnQucHJldmVudERlZmF1bHQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICBzaG93UmVzdWx0c1BhbmVsKCk7DQogICAgICBjYWxjdWxhdGUoKTsNCiAgICB9DQoNCiAgICBpZiAoZWxzLmJ0bkNhbGMpIHsNCiAgICAgIGVscy5idG5DYWxjLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgcnVuQ2FsY3VsYXRpb24pOw0KICAgIH0NCg0KICAgIGFwcGx5TWF0ZXJpYWxQcmVzZXQoZWxzLnBpbmlvbk1hdGVyaWFsLCAicGluaW9uIik7DQogICAgYXBwbHlNYXRlcmlhbFByZXNldChlbHMuZ2Vhck1hdGVyaWFsLCAiZ2VhciIpOw0KICB9DQoNCmlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGluaXRHbXBDYWxjdWxhdG9yKTt9ZWxzZXtpbml0R21wQ2FsY3VsYXRvcigpO30=\");\n    (new Function(c))();\n  }\n  if(document.readyState===\"loading\"){\n    document.addEventListener(\"DOMContentLoaded\",boot);\n  }else{\n    boot();\n  }\n})();\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>The Gear Material Pair Calculator is a practical engineering tool designed to help users evaluate and select suitable material combinations for mating gears. By considering&#8230;<\/p>","protected":false},"author":2,"featured_media":24592,"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":[3560,8557,8558,8509],"class_list":["post-24591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-gear-design","tag-gear-material","tag-material-pair","tag-material-selection","pmpro-has-access"],"acf":[],"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Gear-Material-Pair-Calculator.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/comments?post=24591"}],"version-history":[{"count":0,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/posts\/24591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media\/24592"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/media?parent=24591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/categories?post=24591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/ar\/wp-json\/wp\/v2\/tags?post=24591"}],"curies":[{"name":"\u0648\u0648\u0631\u062f\u0628\u0631\u064a\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}