{
    "templates": {
        "standard": "${special} ${equipment} ${positions} ${modifiers} ${variations} ${others} ${movements} ${version}",
        "minimal": "${equipment} ${movements}",
        "equipment_focus": "${equipment} ${variations} ${movements}"
    },
    "components": {
        "special": [
            "alternating",
            "pregnancy"
        ],
        "positions": [
            "in-place",
            "standing",
            "floor",
            "seated",
            "(?:side\\W+lying|lying\\W+side|lying|side)",
            "incline",
            "decline",
            "flat",
            "(?:half\\W+)?kneeling",
            "prone",
            "supine",
            "(?:split\\W)stance"
        ],
        "variations": [
            "unilateral",
            "bilateral",
            "(?:wide|narrow|underhand|overhand|hammer|close|reverse|neutral|parallel|conventional|hook|standard|stance|snatch|grip)(?:\\W+(?:wide|narrow|underhand|overhand|hammer|close|reverse|neutral|parallel|conventional|standard|stance|snatch|grip)){0,3}\\b(?!.*?\\bcurl\\b)",
            "sumo",
            "deficit",
            "elevated",
            "slow",
            "paused",
            "tempo",
            "explosive",
            "isometric",
            "eccentric"
        ],
        "modifiers": [
            "(?:single\\W+)leg",
            "(?:single\\W)arm",
            "weighted",
            "assisted",
            "banded",
            "chained",
            "partial",
            "(?:full(?:\\W(?:range|rom))?)(?!.*?curl)",
            "strict",
            "kipping",
            "bulgarian",
            "romanian",
            "hack",
            "jefferson",
            "goblet",
            "zercher"
        ],
        "equipment": [
            "(?:stability|exercise)\\W+ball",
            "barbell",
            "(?:bench(?!\\W+(?:press|pull|dip|squat)))",
            "bottle\\W+weight",
            "(?:captain'?s?\\W+)?chair",
            "stool",
            "suspender",
            "box",
            "trx",
            "dumbbell",
            "kettlebell",
            "cable",
            "(?:resistance|loop|band){2}",
            "loop",
            "band",
            "bodyweight",
            "(?:smith\\W+)?machine",
            "(?:trap|ez)\\W+bar",
            "(?:medicine\\W+)ball",
            "(?:long\\W+|short\\W+)?lever"
        ],
        "bodyParts": [
            "chest",
            "back",
            "shoulder",
            "bicep",
            "tricep",
            "quad",
            "hamstring",
            "glute",
            "calf",
            "core",
            "abs",
            "oblique",
            "hip",
            "forearm",
            "trap",
            "deltoid",
            "lat"
        ],
        "movements": [
            "(?:half|deep)?(?:\\W+)?squat",
            "(?:romanian)?(?:\\W+)?deadlift",
            "(?:push\\W?)(?:pull)",
            "press",
            "row",
            "curl",
            "extension",
            "(?:calf\\W+)?(?:[a-z]{1,2}\\W+)?raise",
            "fly",
            "jump",
            "lunge",
            "crunch",
            "twist",
            "(?:plank)(?:\\W+position)?",
            "hold",
            "stretch"
        ],
        "version": [
            "version \\[.*\\]",
            "version (?:i{1,3}|iv|v|vi{1,3}|ix|x)",
            "anjaneyasana (?:i{1,3}|iv|v|vi{1,3}|ix|x)"
        ],
        "others": []
    },
    "replacements": [
        {
            "pattern": "[^\\w™&+']+",
            "replacement": " "
        },
        {
            "pattern": "\\bdb\\b",
            "replacement": "dumbbell"
        },
        {
            "pattern": "\\bbb\\b",
            "replacement": "barbell"
        },
        {
            "pattern": "\\bkb\\b",
            "replacement": "kettlebell"
        },
        {
            "pattern": "\\brbs?\\b",
            "replacement": "resistance-band"
        },
        {
            "pattern": "\\bresistance\\W+bands?\\b",
            "replacement": "resistance-band"
        },
        {
            "pattern": "\\bloop\\W+bands?\\b",
            "replacement": "loop-band"
        },
        {
            "pattern": "\\bw\\W+raises?\\b",
            "replacement": "w-raise"
        },
        {
            "pattern": "\\by\\W+raises?\\b",
            "replacement": "y-raise"
        },
        {
            "pattern": "\\byw\\W+raises?\\b",
            "replacement": "yw-raise"
        },
        {
            "pattern": "\\bsb\\b",
            "replacement": "stability ball"
        },
        {
            "pattern": "\\bmb\\b",
            "replacement": "medicine ball"
        },
        {
            "pattern": "\\brom\\b",
            "replacement": "range-of-motion"
        },
        {
            "pattern": "\\bohps?\\b",
            "replacement": "overhead press"
        },
        {
            "pattern": "\\bdls?\\b",
            "replacement": "deadlift"
        },
        {
            "pattern": "\\brdls?\\b",
            "replacement": "romanian deadlift"
        },
        {
            "pattern": "\\bw(?:/|\\\\)\\b",
            "replacement": "with"
        },
        {
            "pattern": "\\bwo\\b",
            "replacement": "without"
        },
        {
            "pattern": "\\W(?:alt)\\W",
            "replacement": "alternating"
        },
        {
            "pattern": "\\bincl\\b",
            "replacement": "incline"
        },
        {
            "pattern": "\\bdecl\\b",
            "replacement": "decline"
        },
        {
            "pattern": "\\buni\\b",
            "replacement": "unilateral"
        },
        {
            "pattern": "\\btwo\\W+arms?\\b",
            "replacement": "two-arm"
        },
        {
            "pattern": "\\btwo\\W+legs?\\b",
            "replacement": "two-leg"
        },
        {
            "pattern": "\\bsingle\\W+arms?(?:\\W+unilateral\\b|\\b)",
            "replacement": "single-arm"
        },
        {
            "pattern": "\\bsingle\\W+legs?(?:\\W+unilateral\\b|\\b)",
            "replacement": "single-leg"
        },
        {
            "pattern": "\\blong\\W+lever\\b",
            "replacement": "long-lever"
        },
        {
            "pattern": "\\bshort\\W+lever\\b",
            "replacement": "short-lever"
        },
        {
            "pattern": "\\barms\\W+(?:to|on|at)\\W+(?:the\\W+)?sides?\\b",
            "replacement": "arms-to-the-sides"
        },
        {
            "pattern": "\\barm\\W+(?:to|on|at)\\W+sides?\\b",
            "replacement": "arm-to-the-side"
        },
        {
            "pattern": "\\bside\\W+to\\W+side\\b",
            "replacement": "side-to-side"
        },
        {
            "pattern": "\\bstanding\\W+up\\b",
            "replacement": "standing"
        },
        {
            "pattern": "\\bpadded\\W+stool\\b",
            "replacement": "stool"
        },
        {
            "pattern": "\\bwith\\W+chair\\b",
            "replacement": "chair"
        },
        {
            "pattern": "\\bon\\W+spot\\b",
            "replacement": "in-place"
        },
        {
            "pattern": "\\barms?\\W+circles?\\b",
            "replacement": "arm circles"
        },
        {
            "pattern": "\\bbottle\\W+(?:weights?|weighted)\\b",
            "replacement": "bottle weight"
        },
        {
            "pattern": "\\batt?$",
            "replacement": "attachment"
        },
        {
            "pattern": "\\brope\\W+attachment\\b",
            "replacement": "rope-attachment"
        },
        {
            "pattern": "\\b(?:sit\\W+walls?|wall\\W+sits?)\\b",
            "replacement": "wall-sit"
        },
        {
            "pattern": "\\bfigure\\W+(?:fours?|4s?)\\b",
            "replacement": "figure-4"
        },
        {
            "pattern": "\\b(?:forward\\W+lean|lean\\W+forward)\\b",
            "replacement": "forward-lean"
        },
        {
            "pattern": "\\b(?:backward\\W+lean|lean\\W+backward)\\b",
            "replacement": "backward-lean"
        },
        {
            "pattern": "\\bfull\\W+range\\W+of\\W+motion\\b",
            "replacement": "full-range"
        },
        {
            "pattern": "\\b(?:handle|band)\\W+(?:band|handle)\\b",
            "replacement": "banded-handle"
        },
        {
            "pattern": "\\belevanted\\b",
            "replacement": "elevated"
        },
        {
            "pattern": "\\bdumbell\\b",
            "replacement": "dumbbell"
        },
        {
            "pattern": "\\bdumbel\\b",
            "replacement": "dumbbell"
        },
        {
            "pattern": "\\bkettle\\W+bell\\b",
            "replacement": "kettlebell"
        },
        {
            "pattern": "\\bkettelbell\\b",
            "replacement": "kettlebell"
        },
        {
            "pattern": "\\bpush\\W+pull\\b",
            "replacement": "push-pull"
        },
        {
            "pattern": "\\bside\\W+lying\\b",
            "replacement": "side-lying"
        },
        {
            "pattern": "\\blying\\W+side\\b",
            "replacement": "lying-side"
        },
        {
            "pattern": "\\b(?:single|one)\\W+arm\\b",
            "replacement": "single-arm"
        },
        {
            "pattern": "\\b(?:single|one)\\W+leg\\b",
            "replacement": "single-leg"
        },
        {
            "pattern": "\\bin\\W+out\\b",
            "replacement": "in-out"
        },
        {
            "pattern": "\\bin\\W+out\\W+in\\b",
            "replacement": "in-out-in"
        },
        {
            "pattern": "\\bpull\\W+ups?\\b",
            "replacement": "pull-up"
        },
        {
            "pattern": "\\bchin\\W+ups?\\b",
            "replacement": "chin-up"
        },
        {
            "pattern": "\\bpush\\W+ups?\\b",
            "replacement": "push-up"
        },
        {
            "pattern": "\\bsit\\W+ups?\\b",
            "replacement": "sit-up"
        },
        {
            "pattern": "\\bside\\W+steps?\\b",
            "replacement": "side-step"
        },
        {
            "pattern": "\\bfull\\W+range\\b",
            "replacement": "full-range"
        },
        {
            "pattern": "\\bagainst\\W+(?:the|a)?(?:\\W+)?wall\\b",
            "replacement": "against-wall"
        },
        {
            "pattern": "\\bv\\W+bar\\b",
            "replacement": "v-bar"
        },
        {
            "pattern": "\\bbent\\W+over\\b",
            "replacement": "bent-over"
        },
        {
            "pattern": "\\b(?:ez|sz)(?:\\W+bar(?:bell)?)?\\b",
            "replacement": "ez-bar"
        },
        {
            "pattern": "\\bstep\\W+up\\b",
            "replacement": "step-up"
        },
        {
            "pattern": "\\bhammer\\W+grip\\b",
            "replacement": "hammer-grip"
        },
        {
            "pattern": "\\bsnatch\\W+grip\\b",
            "replacement": "snatch-grip"
        },
        {
            "pattern": "\\bhook\\W+grip\\b",
            "replacement": "hook-grip"
        },
        {
            "pattern": "\\bconventional\\W+grip\\b",
            "replacement": "conventional-grip"
        },
        {
            "pattern": "\\bwide\\W+grip\\b",
            "replacement": "wide-grip"
        },
        {
            "pattern": "\\bneutral\\W+grip\\b",
            "replacement": "neutral-grip"
        },
        {
            "pattern": "\\b(?:close|narrow)\\W+grip\\b",
            "replacement": "close-grip"
        },
        {
            "pattern": "\\breverse\\W+grip\\b",
            "replacement": "reverse-grip"
        },
        {
            "pattern": "\\bclean\\W+grip\\b",
            "replacement": "clean-grip"
        },
        {
            "pattern": "\\breverse\\W+close\\W+grip\\b",
            "replacement": "reverse-close-grip"
        },
        {
            "pattern": "\\bparallel\\W+grip\\b",
            "replacement": "parallel-grip"
        },
        {
            "pattern": "\\bparallel\\W+bar\\b",
            "replacement": "parallel-bar"
        },
        {
            "pattern": "\\bfront\\W+foot\\b",
            "replacement": "front-foot"
        },
        {
            "pattern": "\\bback\\W+foot\\b",
            "replacement": "back-foot"
        },
        {
            "pattern": "\\bfront\\W+leg\\b",
            "replacement": "front-leg"
        },
        {
            "pattern": "\\bback\\W+back\\b",
            "replacement": "back-leg"
        },
        {
            "pattern": "\\bstaggered\\W+stance\\b",
            "replacement": "staggered-stance"
        },
        {
            "pattern": "\\bbent\\W+knee\\b",
            "replacement": "bent-knee"
        },
        {
            "pattern": "\\bbent\\W+leg\\b",
            "replacement": "bent-leg"
        },
        {
            "pattern": "\\brear\\W+delt\\b",
            "replacement": "rear-delt"
        },
        {
            "pattern": "\\bfront\\W+delt\\b",
            "replacement": "front-delt"
        },
        {
            "pattern": "\\btoes\\W+up\\b",
            "replacement": "toes-up"
        },
        {
            "pattern": "\\bpalms\\W+up\\b",
            "replacement": "palms-up"
        },
        {
            "pattern": "\\bpalms\\W+down\\b",
            "replacement": "palms-down"
        },
        {
            "pattern": "\\bbehind\\W+back\\b",
            "replacement": "behind-back"
        },
        {
            "pattern": "\\bforward\\W+backward\\b",
            "replacement": "forward-backward"
        },
        {
            "pattern": "\\bfull\\W+squat\\b",
            "replacement": "full-squat"
        },
        {
            "pattern": "\\bhalf\\W+squat\\b",
            "replacement": "half-squat"
        },
        {
            "pattern": "\\bquarter\\W+squat\\b",
            "replacement": "quarter-squat"
        },
        {
            "pattern": "\\bvariation\\b",
            "replacement": "version"
        },
        {
            "pattern": "\\bversion\\s+one\\b",
            "replacement": "version i"
        },
        {
            "pattern": "\\bversion\\s+two\\b",
            "replacement": "version ii"
        },
        {
            "pattern": "\\bversion\\s+three\\b",
            "replacement": "version iii"
        },
        {
            "pattern": "\\bversion\\s+four\\b",
            "replacement": "version iv"
        },
        {
            "pattern": "\\bversion\\s+five\\b",
            "replacement": "version v"
        },
        {
            "pattern": "\\bversion$",
            "replacement": "variation"
        },
        {
            "pattern": "\\b(?:on|with)\\W+a\\b",
            "replacement": " "
        },
        {
            "pattern": "\\bon(?:\\W+the){0,1}\\b",
            "replacement": " "
        },
        {
            "pattern": "\\bof\\b(?!(?:\\s+\\w+){0,5}\\s+(?:pose|dance)\\b)",
            "replacement": " "
        },
        {
            "pattern": "\\bplus\\b",
            "replacement": "+"
        },
        {
            "pattern": "\\b90\\W+to\\W+90\\b",
            "replacement": "90-to-90"
        },
        {
            "pattern": "\\band\\b",
            "replacement": "&"
        }
    ]
}
